- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
最近几天我一直在尝试理解 qmake 是如何工作的,但我被卡住了。我想要一个具有以下结构的项目:
根
我只想测试 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应该很相似]
设置运行环境,
完成后,设置将与您的项目一起存储。 [设置实际上存储在一个以“.user”结尾的文件中,而不是“.pro”文件中。]
当您运行项目时,将使用您在“运行设置”下设置的环境,您的应用程序应以正确的 LD_LIBRARY_PATH 启动。
关于linux - qmake .pro 文件未正确解析以生成 LD_LIBRARY_PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7355571/
在我的源树中,我有一堆资源,我想用 make install 将它们复制到我定义的目标路径。由于资源树有很多很多子目录,我希望 qmake 递归查找所有文件。 我试过: resources.pa
我想配置我的 qmake,这样我的可执行文件就会进入 ./build/debug(或发布)。我已使用以下代码成功完成此操作: CONFIG(debug, debug|release) { DE
我想使用 Qt 制作一个 GUI 应用程序,但无法开始。我在编辑器中编写了以下代码: #include #include int main(int argc, char *argv[]) {
我已经在 qt/c++ 中创建了一个应用程序 浏览器/Browser.pro 要启动浏览器,我需要一个代理。我已经创建了一个代理并将其存储在浏览器文件夹中 Browser/Browser.pro
我厌倦了编译 Qwt (或与此相关的任何其他 Qt 项目)每次发生变化时,例如 Qt 或体系结构的版本。所以: 我想将 Qwt 的 make 文件添加到我的项目中,以便编译后的 Qwt 文件进入我的影
我有一个Qt 程序。当我运行 qmake -project 和 qmake 时,它运行良好。 但是,现在我该如何运行我的程序呢? 谢谢。 最佳答案 make它,如果你在 Linux 中使用它。使用 n
我正在使用 qmake 和 Visual Studio。在发布版本中,qmake 将/GL 和/O2 标志添加到所有项目,我需要为我的整个 Qt 项目中的某些库删除这两个标志。有办法吗? 最佳答案 我
...它应该做但没有做。 这对我来说是 qmake 的主要挫折之一。 qbs 是我们 Qt 的 future ,但现在我们坚持使用 qmake。那么,有什么办法呢? 最佳答案 我滥用 QMAKE_EX
我正在使用 PRE_TARGETDEPS生成源文件,我将生成的源文件添加到 SOURCES用于编译。 我的生成器的输出显然在 qmake 运行时不存在,所以 qmake 输出 WARNING: Fai
我正在尝试通过 ubuntu 中的命令行编译 Qt 应用程序。对我来说,“which qmake”给出了/usr/bin。我在 PATH 变量中给出了 Qt/bin 路径。如何将qmake路径更改为Q
当使用 QMAKE_CXX = clang++ 强制在安装了 gcc 和 clang 的系统上使用 clang 时,clang++ 用于编译 .cpp 文件,但 g++ 是用于最后的链接。这在使用 U
我有一个共享库(没有 QT 依赖)[库 B],它链接到另一个共享库(也没有 QT 依赖)[库 A]。 我正在使用 Qmake 和 QT Creator 1.3。问题是,当我构建库 B 并在可执行文件上
有没有办法为 qmake 中的不同目标指定单独的编译选项? 例如: QMAKE_CXXFLAGS += -O SOURCES += file1.cpp QMAKE_CXXFLAGS += -st
我加了 version.target = version.h version.commands = bash generate-version.sh QMAKE_EXTRA_TARGETS += ve
qmake允许通过这样的命令行界面提供变量: qmake "CONFIG += release" "MY_VAR = hello" 所以我可以使用 $$MY_VAR里面.pro文件。但是有可能以这种方
我有一个看起来像这样的 qmake 项目: TEMPLATE = lib CONFIG += dll TARGET = mydll SOURCES += ... HEADERS += .... 现在我
我在弄清楚 qmake 如何处理依赖于另一个静态库的静态库的包含依赖项时遇到了一些问题。 我的文件夹结构如下: --- src/ lib1/ src/ (.pro,*.h,*.cpp) lib
我试图将我的项目从一台带有 qt4 的计算机转移到另一台我刚安装 qt5 的计算机,但我遇到了一个非常奇怪的问题。 qmake 突然找不到我的任何源文件或头文件。 这是一个极简主义的例子: QT
如 Undocumented qmake 中所述,我在我的 qmake 项目文件中声明了一个额外的编译器: TEST = somefile.h test_c.output = ${QMAKE_VAR_
这行在qmake .pro文件中是什么意思? TEMPLATE=aux 它是not documented,但是现在我测试它似乎不会引起错误或任何错误,并且我已经看到它在.pro中使用。 最佳答案 Go
我是一名优秀的程序员,十分优秀!