gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:00:11 36 4
gpt4 key购买 nike

最近几天我一直在尝试理解 qmake 是如何工作的,但我被卡住了。我想要一个具有以下结构的项目:

    • 测试json
    • libjson.so
  • 来源
    • testjson.cpp

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

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

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

现在我的问题是:为什么 .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 添加到构建环境中,但我发现这不是正确的方法。

最佳答案

我认为您混淆了 qmake (.pro) 文件控制的内容和运行时环境控制的内容。 .pro文件只是指定了BUILD环境,没有指定运行环境。 .pro 文件仅在构建过程中使用。

当您运行构建的代码时,无论是从命令行还是从 Qt Creator 中,您都在处理运行时环境。如果您尝试从 shell 运行该程序,则必须专门指定 LD_LIBRARY_PATH。在 Qt Creator 中,您必须执行相同的操作。

[我这里只安装了Qt Creator 2.2,不过2.3应该很相似]

设置运行环境,

  1. 选择左侧工具栏中的“项目”图标。
  2. 在顶部,选择“运行设置”
  3. 在“运行设置”页面上,进入“运行环境”设置并单击“详细信息”以显示环境的详细信息。
  4. 点击“添加...”并使用适当的设置添加“LD_LIBRARY_PATH”。

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

当您运行项目时,将使用您在“运行设置”下设置的环境,您的应用程序应以正确的 LD_LIBRARY_PATH 启动。

关于linux - qmake .pro 文件未正确解析以生成 LD_LIBRARY_PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7355571/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com