首页 文章

qmake .pro文件未正确解析以生成LD_LIBRARY_PATH

提问于
浏览
1

我在最后几天一直在努力了解qmake的工作原理我是怎么回事 . 我想要一个具有以下结构的项目:

  • bin

  • testjson

  • lib

  • libjson.so

  • src

  • testjson.cpp

我想要的只是测试json库 . 我在Qt Creator 2.3.0中创建了一个新的空项目,并设置了所有设置,以便运行可执行文件 . 测试了我想要的并关闭了应用程序 .

后来,当我再次打开Qt Creator时,我加载了.pro文件并且惊讶,当我尝试运行项目时,我收到此消息:“没有指定可执行文件 . ” :|在这种情况下,我转到项目选项卡,并手动选择可执行文件但是,正如我所料,当我尝试运行它时,我收到此消息“加载共享库时出错:libjson.so:无法打开共享对象文件:没有这样的文件或目录“ . 由于没有设置LD_LIBRARY_PATH,所以预计会出现这种情况(就像我从cli运行它一样) .

看起来.pro文件没有正确解析,因为第一次,在项目选项卡上,当我选择运行选项卡时,我会看到一条消息:“解析.pro文件”,然后运行的配置将被填充,并且显示为灰色,这意味着在解析.pro文件后,Qt Creator添加了LD_LIBRARY_PATH .

现在我的任务是:为什么第一次正确解析.pro文件?

这是.pro文件:

!include(../../common.pri){
    error(Couldn't find the common.pri file!)
}

TEMPLATE = app

SOURCES += testjson.cpp
CONFIG += console
TARGET = testjson

CONFIG(release, debug|release) {
    DESTDIR = $$BinaryDir/Release
} else {
    DESTDIR = $$BinaryDir/Debug
}

LIBS += -L$$LibraryDir -ljson

INCLUDEPATH += $$DefaultInclude
DEPENDPATH += $$LibraryDir

PS:解决方案是手动将LD_LIBRARY_PATH添加到构建环境中,但我发现这不是正确的方法 .

1 回答

  • 3

    我认为你在qmake(.pro)文件控制的内容与运行时环境控制的内容之间存在混淆 . .pro文件仅指定BUILD环境,而不指定运行时环境 . .pro文件仅在构建过程中使用 .

    当您运行构建的代码时,无论是从命令行还是从Qt Creator中运行,您都在处理RUNTIME环境 . 如果您尝试从shell运行该程序,则必须专门指定LD_LIBRARY_PATH . 从Qt Creator中,你必须做同样的事情 .

    [我这里只安装了Qt Creator 2.2,但它在2.3中应该非常相似]

    要设置运行时环境,

    • 选择左侧工具栏中的“项目”图标 .

    • 在顶部,选择"Run Settings"

    • 在“运行设置”页面上,转到"Run Environment"设置,然后单击"Details"以显示环境的详细信息 .

    • 单击"Add..."并使用适当的设置添加"LD_LIBRARY_PATH" .

    完成后,该设置将与您的项目一起存储 . [这些设置实际上存储在一个带有“.user”结尾的文件中,而不是“.pro”文件中 . ]

    当您运行项目时,将使用您在“运行设置”下设置的环境,并且应用程序应该以正确的LD_LIBRARY_PATH开始 .

相关问题