有没有办法根据 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 文件中的注释。这里有什么替代方案?
有没有办法根据 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 文件中的注释。这里有什么替代方案?
你有没有试过这个:
unix: include(/home/user/myProject/myLybrary/my-lib.pri)
win32: include(C:/myProject/myLybrary/my-lib.pri)
您也可以这样使用它(如果有多个文件):
linux-g++ | linux-g++-64 | linux-g++-32 {
# your includes
}
win32 {
# your includes
}
我相信操作系统是指您正在编译的目标架构。这就是 .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 操作系统上开发时才成立。它不依赖于我正在编译的目标架构。
或者如果你喜欢交叉编译:
linux-g++-64{
# your includes
}
linux-arm-g++{
# your includes
}