我如何 select 在 Qt 中构建选项

How i can select build options in Qt

我正在尝试为 x86 编译一个项目,类似于下面的代码示例 .pro 文件。如何使用 x86 或 arm 进行编译?

x86 {
INCLUDEPATH += fo
LIBS += fo
DEFINES += CONFIG_ARM }
arm {
INCLUDEPATH += foo1
LIBS += foo2
DEFINES += CONFIG_ARM }

在 .pro 文件中,您可以根据所使用的平台定义特定的设置,例如要使用的库、包含路径等。我不确定 x86 是否是一个有效的标识符。应该是WIN32,或者因为Qt5:

contains(QT_ARCH,i386)

无论如何,您正在尝试针对完全不同的特定平台进行编译。您正在寻找的是能够完成这项工作的正确编译器。在设置对话框中查看套件详细信息(Build 和 运行 选项中的 Kits 选项卡)。在那里你可以选择你选择的编译器。如果编译器不存在,则必须安装它。

在您的 pro 文件中,以下语法应该有效:

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)

然后检查消息选项卡以查看每个变量中的内容。

Platforms/Architectures定义在Qt安装路径的mkspecs文件夹中:$QTDIR/mkspecs

例如:

C:\Qt.10.0\mingw53_32\mkspecs // Qt Windows

~/Qt/5.10.1/gcc_64/mkspecs // Qt Linux

Qt 使用 QMAKE_PLATFORM ...QMAKE_TARGET .. 可识别 platforms/architectures 的指令,因此您可以通过在 mkspecs/common 文件夹下查看与您的工具包对应的文件,例如列出 Qt 版本中所有支持的平台标签:

cd C:\Qt.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) {