我如何在Qt中选择构建选项

How i can select build options in Qt

本文关键字:选择 构建 选项 Qt      更新时间:2023-10-16

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

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

在您的 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)

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

平台/架构在Qt安装路径的mkspecs文件夹中定义:$QTDIR/mkspecs

例如:

C:Qt5.10.0mingw53_32mkspecs//Qt 窗口

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

Qt使用QMAKE_PLATFORM...QMAKE_TARGET..可识别平台/架构的指令,因此您可以通过查看文件夹下与您的工具包对应的文件来了解您的特定平台/架构是否具有定义的标签mkspecs/common例如列出Qt版本中的所有支持的平台标签:

cd C:Qt5.10.0mingw53_32mkspecscommon

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) {

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

contains(QT_ARCH,i386)

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