0

有没有办法根据Qt-Creator的操作系统来包含不同的库?如何使Qt项目文件(.pro)平台相关?

换句话说,有没有在.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

“qmake”教程的第一页显示了如何:http://qt-project.org/doc/qt-4.8/qmake-tutorial.html – cmannett85 2013-04-26 08:42:27

回答

5

你有没有尝试过这样的:

unix: include(/home/user/myProject/myLybrary/my-lib.pri) 
win32: include(C:/myProject/myLybrary/my-lib.pri) 
1

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

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

win32 { 
# your includes 
} 
+3

您可以使用'linux-g ++ *'来代替'linux-g ++ | Linux的克++ - 64 ...' – 2013-11-15 13:58:21

0

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

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

linux-arm-g++{ 
    # your includes 
} 
1

我认为操作系统是指你正在编译的目标架构。这是.pro文件运行的上下文,它可能与您正在开发的主机的操作系统架构相同或不同。

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

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

这些行只会生效时linux-oe-g++被用作-spec参数QMAKE。 (这是在Qt创建者IDE通过配置项目使用具有在“Qt的makespec”字段中指定的平台的试剂盒设置)

像以下C++代码预处理指令并取决于操作你正在开发的系统:

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

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

相关问题