我如何 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) {
我正在尝试为 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) {