5

有没有办法根据 Qt-Creator 的操作系统包含不同的库?

换句话说,.pro 文件中的以下行是否有等效项:

#ifdef Q_WS_WIN
include(C:/myProject/myLybrary/my-lib.pri)
#endif

#ifdef Q_WS_X11
include(/home/user/myProject/myLybrary/my-lib.pri)
#endif

我知道字符“#”标识 .pro 文件中的注释。这里有什么替代方案?

4

4 回答 4

8

你有没有试过这个:

unix: include(/home/user/myProject/myLybrary/my-lib.pri)
win32: include(C:/myProject/myLybrary/my-lib.pri)
于 2013-04-26T08:29:53.497 回答
7

您也可以这样使用它(如果有多个文件):

linux-g++ | linux-g++-64 | linux-g++-32 {
 # your includes
}

win32 {
 # your includes
}
于 2013-04-26T08:38:55.353 回答
4

我相信操作系统是指您正在编译的目标架构。这就是 .pro 文件运行的环境,它可能与您正在开发的主机操作系统的架构相同,也可能不同。

您可以根据您正在编译的 qmake 规范在 .pro 文件中指定条件表达式。例如,如果您只想在为嵌入式 Linux 架构编译时包含一些库,那么您可以输入:

linux-oe-g++ {
    LIBS += -lsomelib
    HEADERS += SomeClass.h
    SOURCES += SomeClass.cpp
}

linux-oe-g++这些行仅在用作 qmake 的 -spec 参数时才会生效。(这是在 Qt Creator IDE 中通过将项目配置为使用具有“Qt makespec”字段中指定的平台的工具包来设置的。)

像以下 C++ 代码这样的预处理器指令确实取决于您正在开发的操作系统:

#ifdef __linux__
#include "linux/mylinuxlib.h"
#endif

这个条件依赖于环境,仅当我在 Linux 操作系统上开发时才成立。它不依赖于我正在编译的目标架构。

于 2017-06-14T19:49:14.393 回答
2

或者如果你喜欢交叉编译:

linux-g++-64{
# your includes
}

linux-arm-g++{
    # your includes
}
于 2014-09-04T08:04:41.260 回答