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