我正在尝试为x86
编译一个项目,类似于下面的代码示例.pro
文件。如何用x86或arm编译?
x86 {
INCLUDEPATH += fo
LIBS += fo
DEFINES += CONFIG_ARM }
arm {
INCLUDEPATH += foo1
LIBS += foo2
DEFINES += CONFIG_ARM }
答案 0 :(得分:2)
在您的专业版文件中,以下语法应该有效:
equals(QMAKE_TARGET.arch, x86) {
message( "It's x86" )
# Add specific x86 stuff here
}
equals(QMAKE_TARGET.arch, arm) {
message( "It's armeabi-v7a" )
# Add specific arm stuff here
}
如果您要定位Android,QMAKE_TARGET.arch
可能会更改为ANDROID_TARGET_ARCH
。
实际上,您应首先使用message
来确定在您的案例中使用的正确变量,然后在equals
语句中使用正确的变量。例如:
message (ANDROID:$$ANDROID_TARGET_ARCH)
message (HOST:$$QMAKE_HOST)
message (HOST:$$QMAKE_HOST.arch)
message (TARGET:$$QMAKE_TARGET)
message (TARGET:$$QMAKE_TARGET.arch)
然后检查消息选项卡以查看每个变量中的内容。
答案 1 :(得分:0)
在.pro文件中,您可以根据所使用的平台定义特定设置,例如要使用的库,包含路径等。我不确定x86是否是有效的标识符。它应该是WIN32,或者从Qt5开始:
contains(QT_ARCH,i386)
无论如何,你正在尝试编译一个完全不同的特定平台。您正在寻找的是正确的编译器来完成这项工作。在设置对话框中查看套件详细信息(“构建和运行”选项中的“套件”选项卡)。在那里,您可以选择您选择的编译器。如果编译器不存在,则必须安装它。
答案 2 :(得分:0)
平台/体系结构在Qt安装路径的mkspecs
文件夹中定义:$QTDIR/mkspecs
例如:
C:\Qt\5.10.0\mingw53_32\mkspecs
// Qt Windows
~/Qt/5.10.1/gcc_64/mkspecs
// Qt Linux
Qt对可识别的平台/体系结构使用QMAKE_PLATFORM
... QMAKE_TARGET
..指令,因此您可以通过查看对应的文件来了解您的特定平台/体系结构是否具有已定义的标记您的工具包位于mkspecs/common
文件夹下,例如列出Qt版本中所有支持的平台标签:
cd C:\Qt\5.10.0\mingw53_32\mkspecs\common
find "QMAKE_PLATFORM" *.conf | find "="
QMAKE_PLATFORM = integrity
QMAKE_PLATFORM = integrity
QMAKE_PLATFORM = integrity
QMAKE_PLATFORM += ios
QMAKE_PLATFORM += linux
QMAKE_PLATFORM += mac darwin
QMAKE_PLATFORM += macos osx macx
QMAKE_PLATFORM = win32
QMAKE_PLATFORM = qnx $$QMAKE_PLATFORM
QMAKE_PLATFORM += solaris
QMAKE_PLATFORM += tvos
QMAKE_PLATFORM += uikit
QMAKE_PLATFORM += unix posix
QMAKE_PLATFORM += watchos
列出所有支持的架构标签:
find "QMAKE_TARGET" *.conf | find "QMAKE_TARGET"
contains(QMAKE_TARGET.arch, x86_64) {
contains(QMAKE_TARGET.arch, x86_64) {