变量

qmake 的基本行为受变量声明的影响,这些声明定义了每个项目的构建过程。其中一些声明了资源,如每个平台共同的头文件和源文件。其他变量用于自定义特定平台上的编译器和链接器的行为。

特定平台的变量遵循它们扩展或修改的变量名称模式,但在其名称中包含相关平台的名称。例如,makesspec 可能使用 QMAKE_LIBS 指定每个项目需要链接的库列表,而 QMAKE_LIBS_X11 则用于扩展此列表。

ANDROID_ABIS

注意: 此变量仅适用于 Android 目标。

指定 Android 目标 ABIs 的列表。有效值包括:armeabi-v7a, arm64-v8a, x86, x86_64。

您可以将 ABIs 作为 qmake 参数提供

qmake ANDROID_ABIS="armeabi-v7a arm64-v8a"

注意: 您可以在 *.pro 文件中使用此变量,但并不推荐,因为这将覆盖在 qmake 命令行上指定的任何 ABIs。

ANDROID_API_VERSION

注意: 此变量仅适用于 Android 目标。

指定 Android API 级别号。更多信息请参见 Android 构建编号

ANDROID_APPLICATION_ARGUMENTS

注意: 此变量仅适用于 Android 目标。

指定 Android 应用的额外命令行参数,使用 AndroidManifest.xml 中的 "android.app.arguments" 标签。这里接受一个参数字符串

ANDROID_APPLICATION_ARGUMENTS = "arg1 arg2 arg3"

ANDROID_BUNDLED_JAR_DEPENDENCIES

注意: 此变量仅适用于 Android 模块。

在编写 Qt 模块时很有用。它指定了模块中使用的以 .jar 格式预打包的依赖列表,例如

ANDROID_BUNDLED_JAR_DEPENDENCIES += jar/Qt6Android.jar

ANDROID_DEPLOYMENT_DEPENDENCIES

注意: 此变量仅适用于 Android 目标。

默认情况下,androiddeployqt 将检测您应用程序的依赖项。但是,由于无法检测插件在运行时的使用情况,可能会出现误报,因为您的应用程序可能依赖于任何潜在的依赖项插件。如果您想最小化您的 APK 大小,则可以使用此变量覆盖自动检测。此变量应包含所有需要包括的 Qt 文件,路径相对于 Qt 安装根目录。

注意: 仅包含此变量中指定的 Qt 文件。未能包含所有正确的文件可能导致崩溃。还必须确保文件按正确的加载顺序列出。此变量提供了一种完全覆盖自动检测的方法,因此如果在列表中先列出库而不是其依赖项,则某些设备可能会无法加载。

ANDROID_DEPLOYMENT_SETTINGS_FILE

注意: 此变量仅适用于 Android 目标。

指定 androiddeployqtandroidtestrunner 所需的 android-deployment-settings.json 文件的路径。这将覆盖由 qmake 生成的设置文件路径,因此您必须确保提供一个有效的设置文件。

ANDROID_EXTRA_LIBS

注意: 此变量仅适用于 Android 目标。

将复制的到应用程序的 libs 文件夹并加载启动时的外部库列表。这可以用来在应用程序中启用 OpenSSL。更多相关信息,请参阅《为 Android 添加 OpenSSL 支持》。

当每个 ABIs 有自己的目录时,要包含支持多个 ABIs 的外部库,请使用以下格式:

for (abi, ANDROID_ABIS): ANDROID_EXTRA_LIBS += $$PWD/$${abi}/library_name.so

否则,如果 ABI 已包含在库名称中,请使用以下格式:

for (abi, ANDROID_ABIS): ANDROID_EXTRA_LIBS += $$PWD/library_name_$${abi}.so

ANDROID_EXTRA_PLUGINS

注意: 此变量仅适用于 Android 目标。

指定应用程序需要捆绑但无法通过资产系统提供的 C++ 插件或资源的路径,例如 QML 插件。使用此变量,androiddeployqt 将确保所有内容都打包并正确部署。

ANDROID_EXTRA_PLUGINS 必须指向生成额外插件(们)的目录。此外,构建目录结构必须遵循类似于 Qt 插件的命名约定,即 plugins/<插件名称>

插件库应具有以下名称格式 libplugins_<类型>_<名称>_<abi>.so。为了实现这一点,插件 .pro 文件可以定义为以下:

TEMPLATE = lib
CONFIG += plugin

PLUGIN_TYPE = imageformats
DESTDIR = $$top_builddir/plugins/myplugin
TARGET = $$qt5LibraryTarget(myplugin, "plugins/$$PLUGIN_TYPE/")

其中 top_builddir 在 .qmake.conf 中定义为

top_builddir=$$shadowed($$PWD)

这将确保对插件库应用正确的名称混搭(《plugins/myplugin/libplugins_imageformats_myplugin_armeabi-v7a.so》)。

假设一个额外的图像格式插件 myplugin 被构建为 $$DESTDIR/plugins/myplugin/,以下保证了它被 correctly 打包:

ANDROID_EXTRA_PLUGINS += $$top_builddir/plugins

ANDROID_FEATURES

注意: 此变量仅适用于 Android 模块。

指定模块的功能列表

ANDROID_FEATURES += android.hardware.location.gps

更多详细信息,请参阅 Android <uses-feature> 文档

ANDROID_LIB_DEPENDENCIES

注意: 此变量仅适用于 Android 模块。

在编写 Qt 模块时很有用。它指定了模块使用的预构建依赖项列表,例如

ANDROID_LIB_DEPENDENCIES += \
    plugins/libplugins_platforms_qtforandroid.so

ANDROID_MIN_SDK_VERSION

注意: 此变量仅适用于 Android 目标。

指定项目的最小 Android API 级别。默认情况下,此变量设置为 API 级别 23。

ANDROID_PACKAGE_SOURCE_DIR

注意: 此变量仅适用于 Android 目标。

指定自定义 Android 包模板的路径。Android 包模板包含以下内容:

  • AndroidManifest.xml 文件
  • build.gradle 文件和其它 Gradle 脚本
  • res/values/libs.xml 文件

此变量指定的路径可以在 src 目录下包含自定义 Java 类。默认情况下,androiddeployqt 工具会将 Qt for Android 安装路径中的应用程序模板复制到您项目的构建目录中,然后将此路径指定的内容复制到上面,覆盖任何现有文件。例如,您可以为您的应用程序创建一个自定义的 AndroidManifest.xml,然后直接将其放置到该变量指向的目录中。

ANDROID_PERMISSIONS

注意: 此变量仅适用于 Android 模块。

指定模块的权限列表

ANDROID_PERMISSIONS += android.permission.ACCESS_FINE_LOCATION

更多详细信息,请参阅 Android <uses-permission> 文档

ANDROID_TARGET_SDK_VERSION

注意: 此变量仅适用于 Android 目标。

指定项目的目标Android API级别。默认情况下,此变量设置为API级别34。

ANDROID_VERSION_CODE

注意: 此变量仅适用于 Android 目标。

指定应用程序的版本号。有关更多信息,请参阅Android应用程序版本管理

ANDROID_VERSION_NAME

注意: 此变量仅适用于 Android 目标。

指定应用程序的版本,作为一个可供人类阅读的字符串。有关更多信息,请参阅Android应用程序版本管理

CONFIG

指定项目和编译器选项。这些值在qmake中被内部识别,并具有特殊的意义。

注意:这些值的大小写敏感。

以下CONFIG值控制编译器和链接器标志

选项描述
release项目要以发布模式构建。如果指定了debug,则最后一个指定的值生效。
debug项目要以调试模式构建。
debug_and_release项目准备在调试发布模式下构建。
debug_and_release_target此选项默认设置。如果设置了debug_and_release,则调试和发布构建最终将放置在单独的调试和发布目录中。
build_all如果指定了debug_and_release,则默认在调试和发布模式下构建项目。
autogen_precompile_source自动生成一个包含在.pro文件中指定的预编译头文件的.cpp文件。
orderedsubdirs模板中使用时,此选项指定所列目录应按照给定的顺序进行处理。

注意:不建议使用此选项。按照SUBDIRS变量文档中描述的方法指定依赖关系。

precompile_header启用在项目中使用预编译头文件的支持。
precompile_header_c (MSVC only)启用对C文件使用预编译头文件的支持。
warn_on编译器应尽可能输出更多警告。如果指定了warn_off,则最后一个指定的值生效。
warn_off编译器应尽可能输出较少的警告。
exceptions异常支持已启用。默认设置为启用。
exceptions_off异常支持已禁用。
ltcg启用链接时间代码生成。默认不启用此选项。
rttiRTTI支持已启用。默认情况下,使用编译器默认设置。
rtti_offRTTI支持已禁用。默认情况下,使用编译器默认设置。
stlSTL支持已启用。默认情况下,使用编译器默认设置。
stl_offSTL支持已禁用。默认情况下,使用编译器默认设置。
thread线程支持已启用。当CONFIG包括qt时(默认情况),此选项被启用。
no_utf8_source指定项目源文件不使用UTF-8编码,而是使用编译器默认编码。
hide_symbols将二进制符号的默认可见性设置为隐藏。默认情况下,使用编译器默认设置。
c99C99 支持 已启用。如果编译器不支持 C99 或无法选择 C 标准的话,此选项将不起作用。默认情况下,使用编译器的默认设置。
c11C11 支持 已启用。如果编译器不支持 C11 或无法选择 C 标准的话,此选项将不起作用。默认情况下,使用编译器的默认设置。
c17C17(也称为 C18)支持 已启用。如果编译器不支持 C17 或无法选择 C 标准的话,此选项将不起作用。默认情况下,使用编译器的默认设置。
c18这是对 c17 值的别名。
strict_c禁用对 C 编译器扩展的支持。默认情况下,这些扩展是启用的。
c++11C++11 支持 已启用。如果编译器不支持 C++11 或无法选择 C++ 标准的话,此选项将不起作用。默认情况下,支持是启用的。
c++14C++14 支持 已启用。如果编译器不支持 C++14 或无法选择 C++ 标准的话,此选项将不起作用。默认情况下,支持是启用的。
c++17C++17 支持 已启用。如果编译器不支持 C++17 或无法选择 C++ 标准的话,此选项将不起作用。默认情况下,支持是启用的。
c++1z已弃用的 c++17 别名。
c++20C++20 支持 已启用。如果编译器不支持 C++20 或无法选择 C++ 标准的话,此选项将不起作用。默认情况下,支持是禁用的。
c++2a已弃用的 c++20 别名。
c++latest启用了对最新 C++ 语言标准的支持。此选项主要用于支持 /std:c++latest 编译器参数的 MSVC。对于其他工具链,此选项启用 Qt 知道的最新的 C++ 标准。默认情况下,此选项是禁用的。
strict_c++禁用对 C++ 编译器扩展的支持。默认情况下,这些扩展是启用的。
depend_includepath启用了将 INCLUDEPATH 的值附加到 DEPENDPATH。默认设置。
lrelease运行 lreleaseTRANSLATIONSEXTRA_TRANSLATIONS 中列出的所有文件。如果未设置 embed_translations,则将生成的 .qm 文件安装到 QM_FILES_INSTALL_PATH。使用 QMAKE_LRELEASE_FLAGS 为 lrelease 调用添加选项。默认未设置。
embed_translationsQM_FILES_RESOURCE_PREFIX 下将 lrelease 生成的翻译嵌入到可执行文件中。同样需要设置 lrelease。默认未设置。
create_libtool为当前构建的库创建 libtool .la 文件。
create_pc为当前构建的库创建 pkg-config .pc 文件。
no_batchNMake 仅:关闭生成 NMake 批处理规则或推理规则。
skip_target_version_ext压制 Windows 上附加到 DLL 文件名的自动版本号。
suppress_vcproj_warnings压制 VS 项目生成器的警告。
windeployqt在链接后自动调用 windeployqt,并将输出添加为部署项。
dont_recurse压制对当前子项目的 qmake 递归。
no_include_pwd不要将当前目录添加到 INCLUDEPATHS 中。
compile_included_sources默认情况下,qmake 不编译包含在其他源文件中的源文件。此选项禁止这种行为。

当使用 debug_and_release 选项(在 Windows 下默认使用),项目将处理三次:一次生成 "meta" Makefile,另外两次生成 Makefile.Debug 和 Makefile.Release。

在后续遍历中,build_pass 和相应的 debugrelease 选项附加到 CONFIG。这使得能够执行特定于构建的任务。例如

build_pass:CONFIG(debug, debug|release) {
    unix: TARGET = $$join(TARGET,,,_debug)
    else: TARGET = $$join(TARGET,,,d)
}

作为手动编写构建类型条件的选择,一些变量提供了与构建相关的变体,例如,除了一般的 QMAKE_LFLAGS 之外,还有例如 QMAKE_LFLAGS_RELEASE。当可用时,应该使用这些变量。

元 Makefile 通过 debugrelease 目标使子构建可调用,并通过 all 目标实现联合构建。当使用 build_all CONFIG 选项时,联合构建是默认的。否则,最后一个指定的 CONFIG 选项(debugrelease)将确定默认值。在这种情况下,您可以通过显式调用 all 目标来同时构建这两种配置。

make all

注意:在生成 Visual Studio 和 Xcode 项目时,这些细节略有不同。

当链接库时,qmake 依赖于底层平台以知道该库链接了哪些其他库。然而,如果静态链接,除非我们使用以下 CONFIG 选项,否则 qmake 不会获取这些信息:

选项描述
create_prl此选项使 qmake 能够跟踪这些依赖关系。当此选项启用时,qmake 将创建一个扩展名为 .prl 的文件,该文件将保存关于库的元信息(有关更多详细信息,请参阅 库依赖关系)。
link_prl当此选项启用时,qmake 将处理应用程序链接的所有库,并找到它们的元信息(有关更多详细信息,请参阅 库依赖关系)。
no_install_prl此选项禁用了生成生成的 .prl 文件的安装规则。

注意:构建 静态库时需要 create_prl 选项,而使用 静态库 时需要 link_prl 选项。

以下选项定义了应用程序或库类型

选项描述
qt目标是 Qt 应用程序或库,需要 Qt 库和头文件。将自动将 Qt 库的正确包含路径和库路径添加到项目中。这是默认设置的,可以通过 QT 变量进行微调。
x11目标是 X11 应用程序或库。将自动将项目的正确包含路径和库添加到项目中。
testcase目标是自动化测试。会添加一个 检查目标 到生成的 Makefile 中以运行测试。仅当生成 Makefile 时相关。
insignificant_test将忽略自动化测试的退出代码。如果也设置了 testcase,则相关。
windows目标是 Win32 窗口应用程序(仅 app)。将自动将项目的正确包含路径、编译器标志和库添加到项目中。
console目标是 Win32 控制台应用程序(仅 app)。将自动将项目的正确包含路径、编译器标志和库添加到项目中。对于跨平台应用程序,请考虑使用 cmdline 选项。
cmdline目标是跨平台命令行应用程序。在 Windows 上,这表示 CONFIG += console。在 macOS 上,这表示 CONFIG -= app_bundle
shared目标是共享对象/DLL。将自动将项目的正确包含路径、编译器标志和库添加到项目中。请注意,在所有平台上都可以使用 dll;将创建具有目标平台适当后缀的共享库文件(.dll 或 .so)。
dll
static目标是静态库(仅 lib)。将自动将项目的正确编译器标志添加到项目中。
staticlib
plugin目标是一个插件(仅库)。这使DLL也变得可行。
设计师目标是Qt Designer的插件。
no_lflags_merge确保在使用之前,存储在LIBS变量中的库列表不会被缩减为一个唯一值的列表。
metatypes为当前项目创建一个<name>_metatypes.json文件。<name>TARGET的全小写基本名称。
qmltypes自动注册在C++中定义的QML类型。有关更多信息,请参阅从C++定义QML类型。此外,为当前项目创建一个<template>.qmltypes文件。<template>如果设置了plugin,则为复数(出于历史原因),否则为TEMPLATE的值。qmltypes意味着metatypes

这些选项仅针对Windows上的特定功能

选项描述
flat当使用vcapp模板时,这将把所有源文件放入源组,把头文件放入头文件组,无论它们位于哪个目录。关闭此选项将根据它们所在的目录在源/头文件组内对文件进行分组。这是默认启用的。
embed_manifest_dll将清单文件嵌入到作为库项目一部分创建的DLL中。
embed_manifest_exe将清单文件嵌入到作为应用项目一部分创建的EXE中。

有关嵌入清单文件选项的更多信息,请参阅平台备注

以下选项仅适用于macOS

选项描述
app_bundle将可执行文件放入捆绑包中(这是默认设置)。
lib_bundle将库放入库捆绑包中。
plugin_bundle将插件放入插件捆绑包中。此值不支持Xcode项目生成器。

捆绑包的构建过程也受QMAKE_BUNDLE_DATA变量内容的影响。

以下选项仅适用于Linux/Unix平台

选项描述
largefile包括对大型文件的支持。
separate_debug_info将库的调试信息放入单独的文件中。

在解析作用域时也会检查CONFIG变量。您可以为此变量分配任何内容。

例如

CONFIG += console newstuff
...
newstuff {
    SOURCES += new.cpp
    HEADERS += new.h
}

DEFIDES

qmake将此变量的值作为编译器的C预处理器宏(-D选项)添加。

例如

DEFINES += USE_MY_STUFF

DEFIDES_DEBUG

指定调试配置的预处理器宏。在项目加载后,此变量的值添加到DEFIDES中。此变量通常在qmake.conf中设置,很少需要修改。

此变量是在Qt 5.13.2中引入的。

DEFIDES_RELEASE

指定发布配置的预处理器宏。在项目加载后,此变量的值添加到DEFIDES中。此变量通常在qmake.conf中设置,很少需要修改。

注意:对于MSVC mkspecs,此变量默认包含值NDEBUG

此变量是在Qt 5.13.2中引入的。

DEF_FILE

注意:此变量仅在Windows系统使用app模板时使用。

指定要包含在项目中的.def文件。

DEPENDPATH

指定qmake要扫描的目录列表,以解决依赖关系。此变量在qmake通过您的源代码中包含的头文件进行爬取时使用。

DESTDIR

指定放置目标文件的位置。

例如

DESTDIR = ../../lib

注意:支持的字符合依赖于使用的构建工具。特别是,圆括号不支持与make一起使用。

DISTFILES

指定要包含在dist目标中的文件列表。此功能仅由UnixMake规范支持。

例如

DISTFILES += ../program.txt

DLLDESTDIR

注意:此变量仅适用于Windows目标。

指定复制目标dll的位置。

EXTRA_TRANSLATIONS

指定包含用户界面文本的非原生语言翻译的翻译文件(.ts)列表。

TRANSLATIONS相比,EXTRA_TRANSLATIONS中的翻译文件将仅由lrelease处理,而不是由lupdate处理。

您可以使用CONFIG += lrelease在构建过程中自动编译文件,以及CONFIG += lrelease embed_translations让它们在Qt资源系统中可用。

有关使用Qt进行国际化和本地化的更多信息,请参阅Qt Linguist手册

FORMS

指定在编译之前由uic处理的UI文件(参见Qt Designer手册)。构建这些UI文件所需的所有依赖项、头文件和源文件将自动添加到项目中。

例如

FORMS = mydialog.ui \
    mywidget.ui \
        myconfig.ui

GUID

指定设置在.vcproj文件内的GUID。GUID通常是随机确定的。然而,如果您需要固定的GUID,可以使用此变量进行设置。

此变量仅适用于.vcproj文件;如果不适用,则被忽略。

HEADERS

定义项目的头文件。

qmake自动检测头文件中的类是否需要moc,并添加适当的依赖项和文件以生成和链接moc文件到项目中。

例如

HEADERS = myclass.h \
          login.h \
          mainwindow.h

另请参阅SOURCES

ICON

此变量仅在Mac OS上使用,用于设置应用程序图标。有关更多信息,请参阅应用程序图标文档

IDLSOURCES

此变量仅在Windows上用于Visual Studio项目生成,将指定的文件放置在生成文件文件夹中。

INCLUDEPATH

指定在编译项目时应搜索的#include目录。

例如

INCLUDEPATH = c:/msdev/include d:/stl/include

若要指定包含空格的路径,请使用空白中描述的技术引用路径。

win32:INCLUDEPATH += "C:/mylibs/extra headers"
unix:INCLUDEPATH += "/home/user/extra headers"

安装

指定在执行 make install 或类似安装过程时将安装的资源列表。该列表中的每个项目通常定义有提供安装位置信息的属性。

例如,以下 target.path 定义描述了构建目标将被安装的位置,并且 INSTALLS 赋值将构建目标添加到现有资源列表中待安装的清单中。

target.path += $$[QT_INSTALL_PLUGINS]/imageformats
INSTALLS += target

INSTALLS 有一个 .CONFIG 成员,它可以采取几个值。

描述
no_check_exist如果不设置,qmake 会检查要安装的文件是否实际存在。如果这些文件不存在,qmake 不会创建安装规则。如果您需要安装作为您的构建过程一部分生成的文件,例如 qdoc 创建的 HTML 文件,请使用此配置值。
nostrip如果设置,将关闭典型的 Unix strip 功能,调试信息将保留在二进制文件中。
executable在 Unix 上,这将设置可执行标志。
no_build当您执行 make install,并且您还没有项目的构建版本时,项目首先会构建,然后再安装。如果您不希望这种行为,请设置此配置值以确保构建目标不会作为依赖项添加到安装目标中。
no_default_install项目有一个顶级项目目标,当您执行 make install 时,所有内容都会安装。但是,如果您有一个设置了此配置值的安装目标,它将不会默认安装。然后您必须明确地说 make install_<file>

有关更多信息,请参阅 安装文件

此变量还用于指定将部署到嵌入式设备上的附加文件。

JAVA_HOME

注意: 此变量仅对 Android 目标有用。

指定用于构建项目的 JDK/OpenJDK 安装路径。

LEXIMPLS

指定 Lex 实现文件的列表。此变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

LEXOBJECTS

指定中间 Lex 对象文件的名称。此变量的值通常由 qmake 处理,很少需要修改。

LEXSOURCES

指定 Lex 源文件的列表。所有依赖项、头文件和源文件都将自动添加到项目中,以构建这些 Lex 文件。

例如

LEXSOURCES = lexer.l

LIBS

指定要链接到项目的库的列表。如果您使用 Unix -l(库)和 -L(库路径)标志,qmake 会正确处理 Windows 上的库(即向链接器传递库的完整路径)。库必须存在,qmake 才能找到 -l lib 所在的目录。

例如

unix:LIBS += -L/usr/local/lib -lmath
win32:LIBS += c:/mylibs/math.lib

若要指定包含空格的路径,请使用空白中描述的技术引用路径。

win32:LIBS += "C:/mylibs/extra libs/extra.lib"
unix:LIBS += "-L/home/user/extra libs" -lextra

默认情况下,使用 LIBS 存储的库列表在使用之前将减少到唯一名称的列表。要更改此行为,请将 no_lflags_merge 选项添加到 CONFIG 变量。

CONFIG += no_lflags_merge

LIBS_PRIVATE

指定要私有链接到项目的库列表。此变量的行为与LIBS相同,区别在于为Unix构建的共享库项目在链接接口中不暴露这些依赖。

其效果是,如果项目C依赖于私有依赖库B和库A,但C还想直接使用A中的符号,则需要显式链接到A。换句话说,在构建时,私有链接的库不是通过传递暴露的。

LITERAL_HASH

此变量在需要在使用变量声明中的字面量哈希字符(#),例如作为文件名的一部分或在传递给某些外部应用程序的字符串中使用时使用。

例如

# To include a literal hash character, use the $$LITERAL_HASH variable:
urlPieces = https://doc.qt.ac.cn/qt-5/qtextdocument.html pageCount
message($$join(urlPieces, $$LITERAL_HASH))

通过这种方式使用LITERAL_HASH,可以使用#字符构造用于在控制台打印的message()函数的URL。

MAKEFILE

指定生成的Makefile的名称。此变量的值通常由qmake或qmake.conf处理,通常不需要修改。

MAKEFILE_GENERATOR

指定在生成Makefile时使用的Makefile生成器的名称。此变量的值通常由qmake内部处理,很少需要修改。

MSVCPROJ_*

这些变量由qmake内部处理,不应修改或使用。

MOC_DIR

指定放置所有中间 moc 文件的位置。

例如

unix:MOC_DIR = ../myproject/tmp
win32:MOC_DIR = c:/myproject/tmp

OBJECTIVE_HEADERS

为项目定义Objective-C++头文件。

qmake自动检测头文件中的类是否需要moc,并添加适当的依赖项和文件以生成和链接moc文件到项目中。

这与HEADERS变量类似,但可以让生成的 moc 文件使用Objective-C++编译器编译。

另请参阅OBJECTIVE_SOURCES

OBJECTIVE_SOURCES

指定项目中所有Objective-C/C++源文件的名称。

此变量现已弃用,Objective-C/C++文件(.m 和 .mm)可以添加到SOURCES变量中。

另请参阅OBJECTIVE_HEADERS

OBJECTS

此变量从SOURCES变量自动填充。每个源文件的扩展名被替换为 .o(Unix)或 .obj(Win32)。您可以将对象添加到列表中。

OBJECTS_DIR

指定放置所有中间对象的位置。

例如

unix:OBJECTS_DIR = ../myproject/tmp
win32:OBJECTS_DIR = c:/myproject/tmp

POST_TARGETDEPS

列出目标依赖的库。某些后端(如Visual Studio和Xcode项目文件生成器)不支持此变量。通常,这些构建工具内部支持此变量,并且它对于显式列出依赖的静态库很有用。

此列表放在所有内置(和$$PRE_TARGETDEPS)依赖之后。

PRE_TARGETDEPS

列出目标依赖的库。一些后端,例如Visual Studio和Xcode项目文件的生成器,不支持此变量。通常,此变量由这些构建工具内部支持,并用于显式列出依赖的静态库。

此列表位于所有内置依赖项之前。

PRECOMPILED_HEADER

指示创建预编译头文件的头文件,以提高项目的编译速度。预编译头目前仅在某些平台上支持(Windows - 所有MSVC项目类型,Apple - Xcode,Makefile,Unix - gcc 3.3及以上)。

PWD

指定当前解析文件所在目录的完整路径。在编写项目文件以支持影子构建时,这可能很有用。

另请参阅_PRO_FILE_PWD_

注意:不要尝试重写此变量的值。

OUT_PWD

指定qmake放置生成Makefile的目录的完整路径。

注意:不要尝试重写此变量的值。

QM_FILES_RESOURCE_PREFIX

指定由CONFIG += embed_translations提供的.qm文件可在资源系统中访问的目录。

默认为:/i18n/

QM_FILES_INSTALL_PATH

指定由CONFIG += lrelease生成的.qm文件将被安装的目标目录。如果设置CONFIG += embed_translations,则不起作用。

QML_IMPORT_PATH

此变量仅供Qt Creator使用。如果您有一个位于Qt安装以外的额外模块,您可以在这里指定其路径。

有关详细信息,请参阅Qt Creator:使用带有插件QML模块

QMLPATHS

期望一个导入路径列表,该路径指向QML模块树的根目录。例如,如果您有一个QML模块的custom位置,您可以在其中指定它。

注意:QMLPATHS的路径条目指向QML模块树的根目录。这是QML引擎理解的导入路径概念。您可以通过QML_IMPORT_PATH 环境变量将相同路径传递给您的QML应用程序,但它们与QML_IMPORT_PATH qmake变量的预期内容是不同的。后者期望只有Qt Creator处理单个模块的路径。

注意:QMLPATHS的内容不会自动传递给您的应用程序。相反,它们只在构建时使用。特别是,qmlimportscanner使用它们来找到可能需要您的应用程序导入的任何QML模块。

QMAKE

指定qmake程序的名称,并将其放入生成的Makefile中。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKESPEC

这是一个系统变量,包含用于生成Makefile时使用的qmake配置的完整路径。此变量的值会自动计算。

注意:不要尝试重写此变量的值。

QMAKE_APPLE_DEVICE_ARCHS

注意:此变量仅在macOS上使用。

指定要构建的架构列表。默认情况下,项目会针对开发机器的架构进行构建。该变量允许覆盖默认设定,针对不同的架构进行构建或创建多架构的二进制文件。

通常在命令行或项目文件中指定该变量。

有关更多信息,请参阅Qt for macOS

QMAKE_AR_CMD

注意: 此变量仅在Unix平台上使用。

指定在创建共享库时要执行的命令。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_BUNDLE_DATA

注意: 此变量仅在macOS、iOS、tvOS和watchOS上使用。

指定将随库包安装的数据,通常用于指定一组头文件。

例如,以下行将 path/to/header_one.hpath/to/header_two.h 添加到包含有关框架提供头文件信息的组中。

FRAMEWORK_HEADERS.version = Versions
FRAMEWORK_HEADERS.files = path/to/header_one.h path/to/header_two.h
FRAMEWORK_HEADERS.path = Headers
QMAKE_BUNDLE_DATA += FRAMEWORK_HEADERS

最后一行将关于头文件的信息添加到随库包安装的资源集合中。

当将 lib_bundle 选项添加到 CONFIG 变量时,会创建库包。

有关创建库包的更多信息,请参阅平台说明

项目还可以使用此变量捆绑应用程序翻译文件。确切的语法取决于项目是否使用Xcode的旧版构建系统或新的构建系统。

例如,以下项目片段是在使用旧版构建系统构建时

translations_en.files = $$PWD/en.lproj/InfoPlist.strings
translations_en.path = en.lproj
QMAKE_BUNDLE_DATA += translations_en

Xcode将忽略InfoPlist.strings的原始位置,并将在提供的translations_en.path路径下的Resources目录中将该文件放置在捆绑中,因此应该放在Resources/en.lproj/InfoPlist.strings

使用新的构建系统,文件的相对位置会被保留,这意味着文件将被错误地放置在Resources/en.lproj/en.lproj/InfoPlist.strings下。

为了确保正确的文件放置,项目可以选择将原始文件移动开来,使其不在子目录中,或者可以选择不指定translations_en.path变量。

# Approach 1
translations_en.files = $$PWD/InfoPlist.strings
translations_en.path = en.lproj

# Approach 2
translations_de.files = $$PWD/de.lproj/InfoPlist.strings

QMAKE_BUNDLE_DATA += translations_en translations_de

有关Xcode构建系统在捆绑翻译文件方面的行为变化的更多信息,请参阅QTBUG-98417

QMAKE_BUNDLE_EXTENSION

注意: 此变量仅在macOS、iOS、tvOS和watchOS上使用。

指定库包要使用的扩展名。这允许框架使用自定义扩展名而不是标准的.framework目录名扩展名。

例如,以下定义将导致具有.myframework扩展名的框架创建。

QMAKE_BUNDLE_EXTENSION = .myframework

QMAKE_CC

指定在构建包含C源代码的项目时使用的C编译器。只要编译器可执行文件的文件名被指定,并且它在处理Makefile时包含在PATH变量中,就可以不需要指定。

QMAKE_CFLAGS

指定构建项目时的C编译器标志。此变量的值通常由qmake或qmake.conf处理,很少需要修改。可以通过修改QMAKE_CFLAGS_DEBUGQMAKE_CFLAGS_RELEASE变量来分别调整调试模式和发布模式的特定标志。

QMAKE_CFLAGS_DEBUG

指定调试构建的C编译器标志。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_CFLAGS_RELEASE

指定发布构建的C编译器标志。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO

指定在CONFIG中设置force_debug_info时的发布构建的C编译器标志。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_CFLAGS_SHLIB

注意: 此变量仅在Unix平台上使用。

指定创建共享库的编译器标志。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_CFLAGS_THREAD

指定创建多线程应用程序的编译器标志。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_CFLAGS_WARN_OFF

仅当设置warn_off CONFIG选项时使用此变量。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_CFLAGS_WARN_ON

仅当设置warn_on CONFIG选项时使用此变量。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_CLEAN

指定要由make clean删除的生成文件(例如由mocuic生成的文件)和对象文件列表。

QMAKE_CXX

指定构建包含C++源代码的项目时将使用的C++编译器。只要它位于Makefile处理时包含在PATH变量中的路径中,就只需要指定编译器可执行文件的文件名。

QMAKE_CXXFLAGS

指定构建项目的C++编译器标志。此变量的值通常由qmake或qmake.conf处理,很少需要修改。可以通过修改QMAKE_CXXFLAGS_DEBUGQMAKE_CXXFLAGS_RELEASE变量来调整特定于调试和发布模式的标志。

QMAKE_CXXFLAGS_DEBUG

指定调试构建的C++编译器标志。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_CXXFLAGS_RELEASE

指定发布构建的C++编译器标志。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO

指定在CONFIG中设置force_debug_info时的发布构建的C++编译器标志。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_CXXFLAGS_SHLIB

指定创建共享库的C++编译器标志。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_CXXFLAGS_THREAD

指定创建多线程应用程序的C++编译器标志。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_CXXFLAGS_WARN_OFF

指定用于抑制编译器警告的C++编译器标志。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_CXXFLAGS_WARN_ON

指定用于生成编译器警告的C++编译器标志。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_DEVELOPMENT_TEAM

注意: 此变量仅在macOS、iOS、tvOS和watchOS上使用。

用于签名证书和配置文件的开发团队的标识符。

QMAKE_DISTCLEAN

指定由make distclean删除的文件列表。

QMAKE_EXTENSION_SHLIB

包含共享库的扩展名。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

注意:更改扩展名的平台特定变量将覆盖此变量的内容。

QMAKE_EXTENSION_STATICLIB

包含共享静态库的扩展名。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_EXT_MOC

包含用于包含moc文件的扩展名。

另请参阅文件扩展名

QMAKE_EXT_UI

包含用于Qt Designer UI文件的扩展名。

另请参阅文件扩展名

QMAKE_EXT_PRL

包含用于创建的PRL文件的扩展名。

另请参阅文件扩展名库依赖关系

QMAKE_EXT_LEX

包含用于Lex的文件的扩展名。

另请参阅文件扩展名LEXSOURCES

QMAKE_EXT_YACC

包含用于Yacc的文件的扩展名。

另请参阅文件扩展名YACCSOURCES

QMAKE_EXT_OBJ

包含用于生成的对象文件的扩展名。

另请参阅文件扩展名

QMAKE_EXT_CPP

包含应被解释为C++源代码的文件的扩展名。

另请参阅文件扩展名

QMAKE_EXT_H

包含应被解释为C头文件的文件的扩展名。

另请参阅文件扩展名

QMAKE_EXTRA_COMPILERS

指定附加编译器或预处理器列表。

另请参阅添加编译器

QMAKE_EXTRA_TARGETS

指定附加qmake目标列表。

另请参阅添加自定义目标

QMAKE_FAILED_REQUIREMENTS

包含失败需求的列表。此变量的值由qmake设置,不能修改。

另请参阅requires()REQUIRES

QMAKE_FRAMEWORK_BUNDLE_NAME

注意: 此变量仅在macOS、iOS、tvOS和watchOS上使用。

在框架项目中,此变量包含用于构建的框架的名称。

默认情况下,此变量包含与TARGET变量相同的值。

有关创建框架和库包的更多信息,请参阅创建框架

QMAKE_FRAMEWORK_VERSION

注意: 此变量仅在macOS、iOS、tvOS和watchOS上使用。

对于构建目标为macOS、iOS、tvOS或watchOS框架的项目,此变量用于指定应用于构建的框架的版本号。

默认情况下,此变量包含与VERSION变量相同的值。

有关创建框架的更多信息,请参阅创建框架

QMAKE_HOST

提供关于运行qmake的主机机器的信息。例如,您可以从QMAKE_HOST.arch获取主机机器的架构。

.arch主机架构
.os主机操作系统
.cpu_count可用的CPU数量
.name主机计算机名称
.version主机操作系统版本号
.version_string主机操作系统版本字符串
win32-g++:contains(QMAKE_HOST.arch, x86_64):{
    message("Host is 64bit")
    ...
}

QMAKE_INCDIR

指定要附加到INCLUDEPATH的系统头文件路径列表。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_INCDIR_EGL

指定在构建具有OpenGL/ES或OpenVG支持的目标时添加到INCLUDEPATH的EGL头文件位置。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_INCDIR_OPENGL

指定在构建具有OpenGL支持的目标时添加到INCLUDEPATH的OpenGL头文件位置。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

如果OpenGL实现使用EGL(大多数OpenGL/ES系统),则可能还需要设置QMAKE_INCDIR_EGL。

QMAKE_INCDIR_OPENGL_ES2

此变量指定添加OpenGL头文件的路径,以便在构建支持OpenGL ES 2的目标时添加到INCLUDEPATH

该变量的值通常由qmake或qmake.conf处理,很少需要修改。

如果OpenGL实现使用EGL(大多数OpenGL/ES系统),则可能还需要设置QMAKE_INCDIR_EGL。

QMAKE_INCDIR_OPENVG

指定在构建支持OpenVG的目标时添加到INCLUDEPATH的OpenVG头文件的路径。该变量的值通常由qmake或qmake.conf处理,很少需要修改。

如果OpenVG实现使用EGL,那么也可能需要设置QMAKE_INCDIR_EGL。

QMAKE_INCDIR_X11

注意: 此变量仅在Unix平台上使用。

指定在构建X11目标时添加到INCLUDEPATH的X11头文件路径。该变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_INFO_PLIST

注意:此变量仅在macOS、iOS、tvOS和watchOS平台上使用。

指定要包含在macOS、iOS、tvOS和watchOS应用程序包中的属性列表文件(.plist)的名称。

.plist文件中,您可以定义一些变量,qmake将用相关值替换这些变量

占位符效果
${PRODUCT_BUNDLE_IDENTIFIER}@BUNDLEIDENTIFIER@展开为目标包的包标识符字符串,例如:com.example.myapp。通过连接QMAKE_TARGET_BUNDLE_PREFIXQMAKE_BUNDLE的值得到,两者之间用句点(.)分隔。QMAKE_BUNDLE的值是从QMAKE_APPLICATION_BUNDLE_NAMEQMAKE_PLUGIN_BUNDLE_NAMEQMAKE_FRAMEWORK_BUNDLE_NAME中得出的。它不应直接由项目设置。
${EXECUTABLE_NAME}@EXECUTABLE@@LIBRARY@等于QMAKE_APPLICATION_BUNDLE_NAME、QMAKE_PLUGIN_BUNDLE_NAME或QMAKE_FRAMEWORK_BUNDLE_NAME(取决于创建的目标类型),或如果没有设置前面的值,则为TARGET。
${ASSETCATALOG_COMPILER_APPICON_NAME}@ICON@展开为ICON的值。
${QMAKE_PKGINFO_TYPEINFO}@TYPEINFO@展开为QMAKE_PKGINFO_TYPEINFO的值。
${QMAKE_FULL_VERSION}@FULL_VERSION@展开为用三个版本组件表示的VERSION的值。
${QMAKE_SHORT_VERSION}@SHORT_VERSION@展开为用两个版本组件表示的VERSION的值。
${MACOSX_DEPLOYMENT_target}展开为QMAKE_MACOSX_DEPLOYMENT_TARGET的值。
${IPHONEOS_DEPLOYMENT_target}展开为QMAKE_IPHONEOS_DEPLOYMENT_TARGET的值。
${TVOS_DEPLOYMENT_target}展开为QMAKE_TVOS_DEPLOYMENT_TARGET的值。
${WATCHOS_DEPLOYMENT_target}展开为QMAKE_WATCHOS_DEPLOYMENT_TARGET的值。
${IOS_LAUNCH_SCREEN}展开为QMAKE_IOS_LAUNCH_SCREEN的值。

注意:在使用Xcode生成器时,上述${var}样式的占位符会被Xcode构建系统直接替换,并且不由qmake处理。只有@var@样式的占位符与qmake的Makefile生成器一起工作,而不是与Xcode生成器一起工作。

如果针对iOS构建,并且.plist文件包含键NSPhotoLibraryUsageDescription,qmake将包括一个额外的插件来构建支持照片访问(例如,到QFile/QFileDialog)。有关此键的更多信息,请参阅Apple的Info.plist文档。

注意:大多数时候,默认的Info.plist就足够好。

QMAKE_IOS_DEPLOYMENT_TARGET

注意:此变量仅在iOS平台上使用。

指定应用程序支持的iOS的最小版本。

有关更多信息,请参阅表达支持的iOS版本

QMAKE_IOS_LAUNCH_SCREEN

注意:此变量仅在iOS平台上使用。

指定应用程序使用的启动屏幕。如果未设置,则使用默认启动屏幕。

QMAKE_LFLAGS

指定传递给链接器的一般标志集。如果您需要更改特定平台或项目类型的标志,请改用专门为此目的设计的变量,而不是此变量。

QMAKE_LFLAGS_CONSOLE

注意:此变量仅在Windows上使用。

指定构建控制台程序所需的链接器标志。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_LFLAGS_DEBUG

指定调试构建所需的链接器标志。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_LFLAGS_PLUGIN

指定构建插件所需的链接器标志。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_LFLAGS_RPATH

注意: 此变量仅在Unix平台上使用。

指定使用来自QMAKE_RPATHDIR的值的链接器标志。

该变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_LFLAGS_REL_RPATH

指定使用QMAKE_RPATHDIR中的相对路径所需的链接器标志。

该变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_REL_RPATH_BASE

指定动态链接器可以理解的字符串,作为引用的可执行文件或库的位置。

该变量的值通常由qmake或qmake.conf处理,很少需要修改。

指定使用来自QMAKE_RPATHLINKDIR的值的链接器标志。

该变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_LFLAGS_RELEASE

指定发布构建所需的链接器标志。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO

指定在CONFIG中设置force_debug_info的发布构建所需的链接器标志。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_LFLAGS_APP

指定构建应用程序的链接器标志。此变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

QMAKE_LFLAGS_SHLIB

指定构建共享库使用的链接器标志。此变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

QMAKE_LFLAGS_SONAME

指定设置共享对象的名称(如 .so 或 .dll)的链接器标志。此变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

QMAKE_LFLAGS_THREAD

指定构建多线程项目的链接器标志。此变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

QMAKE_LFLAGS_WINDOWS

注意:此变量仅在Windows上使用。

指定构建 Windows GUI 项目的链接器标志(即非控制台应用程序)。此变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

QMAKE_LIBDIR

指定所有项目的库搜索路径列表。此变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

要在项目文件中指定额外的搜索路径,请使用 LIBS 如此,而不是

LIBS += -L/path/to/libraries

QMAKE_LIBDIR_POST

指定所有项目的系统库搜索路径列表。此变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

QMAKE_LIBDIR_FLAGS

注意: 此变量仅在Unix平台上使用。

指定所有带有 -L 前缀的库目录的位置。此变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

QMAKE_LIBDIR_EGL

指定使用 OpenGL/ES 或 OpenVG 时 EGL 库目录的位置。此变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

QMAKE_LIBDIR_OPENGL

指定 OpenGL 库目录的位置。此变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

如果 OpenGL 实现使用 EGL(大多数 OpenGL/ES 系统),则还可能需要设置 QMAKE_LIBDIR_EGL。

QMAKE_LIBDIR_OPENVG

指定 OpenVG 库目录的位置。此变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

如果 OpenVG 实现使用 EGL,那么还可能需要设置 QMAKE_LIBDIR_EGL。

QMAKE_LIBDIR_X11

注意: 此变量仅在Unix平台上使用。

指定 X11 库目录的位置。此变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

QMAKE_LIBS

指定每个项目需要的其他库。此变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

在项目文件中指定库时,请使用 LIBS

QMAKE_LIBS_PRIVATE

指定每个项目需要链接的额外私有库。此变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

在库项目文件中指定私有库时,请使用 LIBS_PRIVATE

QMAKE_LIBS_EGL

在构建带OpenGL/ES或OpenVG的Qt时指定所有EGL库。此变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。通常的值是 -lEGL

QMAKE_LIBS_OPENGL

指定所有OpenGL库。此变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

如果OpenGL实现使用EGL(大多数OpenGL/ES系统),则还可能需要设置 QMAKE_LIBS_EGL。

QMAKE_LIBS_OPENGL_ES1, QMAKE_LIBS_OPENGL_ES2

这些变量指定OpenGL ES 1和OpenGL ES 2的所有OpenGL库。

这些变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

如果OpenGL实现使用EGL(大多数OpenGL/ES系统),则还可能需要设置 QMAKE_LIBS_EGL。

QMAKE_LIBS_OPENVG

指定所有OpenVG库。此变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。通常的值是 -lOpenVG

一些OpenVG引擎在OpenGL之上实现。这将在配置时检测到,并且 QMAKE_LIBS_OPENGL 将在链接OpenVG库的地方隐式添加到 QMAKE_LIBS_OPENVG。

如果OpenVG实现使用EGL,则可能还需要设置 QMAKE_LIBS_EGL。

QMAKE_LIBS_THREAD

注意: 此变量仅在Unix平台上使用。

指定构建多线程目标需要链接的所有库。此变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

QMAKE_LIBS_X11

注意: 此变量仅在Unix平台上使用。

指定所有X11库。此变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

QMAKE_LIB_FLAG

如果指定了 lib 模板,则此变量不为空。此变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

指定在构建应用程序项目时使用的链接器。只要链接器可执行文件名已在Makefile处理时包含在 PATH 变量包含的路径中,就需要指定文件名。此变量的值通常由qmake或qmake.conf 处理,很少需要修改。

指定在创建共享库时要执行的命令。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_LN_SHLIB

指定创建到共享库链接时执行的命令。此变量的值通常由qmake或qmake.conf 处理,很少需要修改。

QMAKE_LRELEASE_FLAGS

当通过CONFIG += lrelease 启用时,将传递给 lrelease 的附加选项列表。

QMAKE_OBJECTIVE_CFLAGS

指定用于构建项目的Objective C/C++编译器标志。这些标志是QMAKE_CFLAGS和QMAKE_CXXFLAGS的附加。

QMAKE_POST_LINK

指定在链接TARGET 之后执行的命令。该变量通常为空,因此不执行任何操作。

注意:此变量对Xcode项目没有影响。

指定在链接TARGET 之前执行的命令。此变量通常为空,因此不执行任何操作。

警告:当使用Xcode生成器和新的Xcode构建系统时,不支持此变量。

QMAKE_PROJECT_NAME

注意:此变量仅用于Visual Studio项目文件。

确定生成IDE项目文件时的项目名称。默认值为目标名称。此变量的值通常由qmake处理,很少需要修改。

QMAKE_PROVISIONING_PROFILE

注意: 此变量仅在macOS、iOS、tvOS和watchOS上使用。

有效配置文件的UUID。与QMAKE_DEVELOPMENT_TEAM 结合使用以指定配置文件。

注意:指定配置文件将禁用自动管理的签名。

QMAKE_MAC_SDK

在macOS上构建通用二进制时使用此变量。

QMAKE_MACOSX_DEPLOYMENT_TARGET

注意:此变量仅在macOS平台上使用。

指定应用程序支持的macOS的最低版本。

有关更多信息,请参阅macOS支持版本

QMAKE_MAKEFILE

指定要创建的Makefile名称。此变量的值通常由qmake或qmake.conf 处理,很少需要修改。

QMAKE_QMAKE

包含qmake可执行文件的绝对路径。

注意:不要尝试重写此变量的值。

QMAKE_RESOURCE_FLAGS

此变量用于在每个使用的构建规则中自定义传递给资源编译器的选项列表。例如,以下行确保在调用rcc 时使用特定的值使用-threshold-compress 选项

QMAKE_RESOURCE_FLAGS += -threshold 0 -compress 9

QMAKE_RPATHDIR

注意: 此变量仅在Unix平台上使用。

指定在链接时添加到可执行文件的库路径列表,以便在运行时优先搜索这些路径。

当指定相对路径时,qmake会将其转换为动态链接器可识别的相对路径形式,即相对于引用的可执行文件或库的位置。这仅由某些平台(目前为Linux和基于Darwin的平台)支持,并且可以通过检查QMAKE_REL_RPATH_BASE是否设置来确定。

QMAKE_RPATHLINKDIR

指定静态链接器搜索共享库隐含依赖项的库路径列表。有关更多信息,请参见ld(1)的手册页。

QMAKE_RUN_CC

指定构建对象所需的各个规则。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_RUN_CC_IMP

指定构建对象所需的各个规则。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_RUN_CXX

指定构建对象所需的各个规则。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_RUN_CXX_IMP

指定构建对象所需的各个规则。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_SONAME_PREFIX

如果已定义,则此变量的值用作构建的共享库的SONAME标识符的前缀。后来的动态链接器将使用该标识符引用库。通常,该引用可以是库名称或完整的库路径。在macOS、iOS、tvOS和watchOS上,路径可以使用以下占位符相对指定

占位符效果
@rpath扩展到当前进程可执行文件或引用的库中LC_RPATH mach-o命令定义的路径。
@executable_path扩展到当前进程可执行文件的位置。
@loader_path扩展到引用的可执行文件或库的位置。

在大多数情况下,使用@rpath就足够了,并且推荐这样做

# <project root>/project.pro
QMAKE_SONAME_PREFIX = @rpath

但是,前缀也可以使用不同的占位符或绝对路径指定,如下所示

# <project root>/project.pro
QMAKE_SONAME_PREFIX = @executable_path/../Frameworks
QMAKE_SONAME_PREFIX = @loader_path/Frameworks
QMAKE_SONAME_PREFIX = /Library/Frameworks

有关更多信息,请参见《dyld》文档中对动态库安装名称的描述。

QMAKE_TARGET

指定项目目标的名称。此变量的值通常由qmake或qmake.conf处理,很少需要修改。

QMAKE_TARGET_COMPANY

仅限Windows。指定项目目标的公司;在适用的情况下,用于在应用程序属性中放置公司名称。只有在设置了VERSIONRC_ICONS变量且未设置RC_FILERES_FILE变量时才使用。

QMAKE_TARGET_DESCRIPTION

仅限Windows。指定项目目标的描述;在适用的情况下,用于在应用程序属性中放置描述。只有在设置了VERSIONRC_ICONS变量且未设置RC_FILERES_FILE变量时才使用。

仅适用于Windows。指定项目目标的版权信息;适用于在应用程序属性中放置版权信息。仅在设置VERSIONRC_ICONS变量且未设置变量RC_FILERES_FILE时使用。

QMAKE_TARGET_PRODUCT

仅适用于Windows。指定项目目标的产品;适用于在应用程序属性中放置产品。仅在设置VERSIONRC_ICONS变量且未设置变量RC_FILERES_FILE时使用。

QMAKE_TARGET_ORIGINAL_FILENAME

仅适用于Windows。指定项目目标的原文件名;适用于在应用程序属性中放置原文件名。仅在设置VERSIONRC_ICONS变量且未设置变量RC_FILERES_FILE时使用。

QMAKE_TARGET_INTERNALNAME

仅适用于Windows。指定项目目标的内部名称;适用于在应用程序属性中放置内部名称。仅在设置VERSIONRC_ICONS变量且未设置变量RC_FILERES_FILE时使用。

QMAKE_TARGET_COMMENTS

仅适用于Windows。指定项目目标的说明;适用于在应用程序属性中放置说明。仅在设置VERSIONRC_ICONS变量且未设置变量RC_FILERES_FILE时使用。

QMAKE_TARGET_TRADEMARKS

仅适用于Windows。指定项目目标的商标信息;适用于在应用程序属性中放置商标信息。仅在设置VERSIONRC_ICONS变量且未设置变量RC_FILERES_FILE时使用。

QMAKE_MANIFEST

仅适用于Windows。指定项目目标的清单文件。仅在未设置变量RC_FILERES_FILE时使用。别忘了从CONFIG变量中删除embed_manifest_exe和embed_manifest_dll,否则将与编译器生成的冲突。

QMAKE_TVOS_DEPLOYMENT_TARGET

注意:此变量仅用于tvOS平台。

指定应用程序支持tvOS的最低版本。

有关更多信息,请参阅表达支持的iOS版本

QMAKE_UIC_FLAGS

此变量用于在每个使用它的构建规则中自定义传递给用户界面编译器的选项列表。

QMAKE_WATCHOS_DEPLOYMENT_TARGET

注意:该变量仅在 watchOS 平台上使用。

指定应用程序支持的 watchOS 的最低硬版本。

有关更多信息,请参阅表达支持的iOS版本

QML_IMPORT_MAJOR_VERSION

指定用于自动生成 QML 类型注册的版本。有关更多信息,请参阅从 C++ 定义 QML 类型

QML_IMPORT_MINOR_VERSION

当自动注册在 C++ 中定义的 QML 类型时,使用此次要版本注册模块的另一个版本。一般来说,要注册的次要版本可以从元对象中推断出来。

如果元对象没有更改,且您仍然想导入一个具有较新次要版本号的 QML 模块,可以使用此变量。例如,MyModule 元对象处于 1.1 级别,但您希望将其导入为 1.3

QML_IMPORT_VERSION

指定 QML_IMPORT_MAJOR_VERSIONQML_IMPORT_MINOR_VERSION 作为 <major>.<minor> 版本字符串。

QML_IMPORT_NAME

指定用于自动生成 QML 类型注册的模块名称。有关更多信息,请参阅从 C++ 定义 QML 类型

QML_FOREIGN_METATYPES

指定要生成 qmltypes 文件时考虑的进一步 JSON 文件中的元类型。当外部库提供暴露给 QML 的类型时,不论直接暴露还是作为其他类型的基类型或属性时,使用此选项。Qt 类型将自动考虑,无需在此添加。

QT

指定您的项目使用的 Qt 模块。有关每个模块要添加的值,请参阅模块文档。

在 C++ 实现级别,使用 Qt 模块使其头文件可用于包含并导致将其链接到二进制文件。

默认情况下,QT 包含 coregui,确保标准 GUI 应用程序可以在无需进一步配置的情况下构建。

如果您想构建一个不带 Qt GUI 模块的 项目,您需要使用 "-=" 操作符排除 gui 值。以下行将生成一个最小 Qt 项目。

QT -= gui # Only the core module is used.

如果您的项目是一个 Qt Designer 插件,请使用值 uiplugin 来指定项目将作为一个库构建,但带有针对 Qt Designer 的特定插件支持。有关更多信息,请参阅构建和安装插件

QTPLUGIN

指定要与应用程序链接的静态 Qt 插件的名称列表,以便它们作为内置资源可用。

qmake 自动添加所需 Qt 模块(请参阅 QT)通常会需要的插件。默认设置针对最佳开箱体验进行了调整。有关可用插件列表和覆盖自动链接的方法,请参阅静态插件

在针对共享/动态构建的 Qt 链接或链接库时,此变量目前没有效果。将来可能会用于动态插件的部署。

QT_VERSION

包含当前 Qt 的版本。

QT_MAJOR_VERSION

包含当前 Qt 的大版本。

QT_MINOR_VERSION

包含当前Qt的次要版本。

QT_PATCH_VERSION

包含当前Qt的补丁版本。

RC_FILE

仅限Windows。指定目标的Windows资源文件(.rc)名称。请参阅添加Windows资源文件

RC_CODEPAGE

仅限Windows。指定在生成的.rc文件中应指定的代码页。仅在VERSIONRC_ICONS变量设置,且RC_FILERES_FILE变量未设置时使用。

RC_DEFINES

仅限Windows。qmake将此变量的值作为RC预处理器宏(/d选项)添加。如果没有设置此变量,则使用DEFINES变量。

RC_DEFINES += USE_MY_STUFF

RC_ICONS

仅限Windows。指定应包含到生成的.rc文件中的图标。仅在RC_FILERES_FILE变量未设置时使用。有关生成.rc文件更详细的信息,请参阅平台说明

RC_LANG

仅限Windows。指定应指定在生成的.rc文件中的语言。仅在VERSIONRC_ICONS变量设置,且RC_FILERES_FILE变量未设置时使用。

RC_INCLUDEPATH

指定传递给Windows资源编译器的包含路径。

RCC_DIR

指定Qt资源编译器输出文件的目录。

例如

unix:RCC_DIR = ../myproject/resources
win32:RCC_DIR = c:/myproject/resources

REQUIRES

指定要评估的条件值的列表。如果任何一个条件为假,则qmake在构建时跳过此项目(及其SUBDIRS)。

注意:如果您想在构建时跳过项目或子项目,我们建议使用requires()函数。

RESOURCES

指定目标的资源集合文件(qrc)名称。有关资源集合文件的更多信息,请参阅Qt资源系统

RES_FILE

仅限Windows。指定此目标的Windows资源编译器输出文件名称。请参阅RC_FILE添加Windows资源文件

该变量的值通常由qmake或qmake.conf处理,很少需要修改。

SOURCES

指定项目中所有源文件的名称。

例如

SOURCES = myclass.cpp \
      login.cpp \
      mainwindow.cpp

另请参阅HEADERS

SUBDIRS

该变量与subdirs 模板一起使用时,指定了包含需要构建的项目部分的子目录或项目文件的名称。使用该变量指定的每个子目录必须包含自己的项目文件。

建议每个子目录中的项目文件使用与子目录相同的基名,因为这可以省略文件名。例如,如果子目录名为myapp,则该目录中的项目文件应命名为myapp.pro

或者,您可以在任意目录中指定一个相对路径到 .pro 文件。强烈建议您只在当前项目的父目录或其子目录中指定路径。

例如

SUBDIRS = kernel \
          tools \
          myapp

如果您需要确保子目录按特定的顺序构建,请在相关的 SUBDIRS 元素上使用 .depends 修饰符。

例如

SUBDIRS += my_executable my_library tests doc
my_executable.depends = my_library
tests.depends = my_executable

上面的配置确保在构建my_library之前构建my_executable,在构建my_executable之前构建tests。然而,doc可以与其他子目录并行构建,从而加快构建过程。

注意:可以列出多个依赖项,并且它们都将在依赖它们的目标之前构建。

注意:使用CONFIG += ordered是不被推荐的,因为它可能会降低多核构建的速度。与上面的示例不同,即使没有依赖关系,所有构建也将顺序执行。

除了定义构建顺序之外,还可以通过向SUBDIRS元素提供额外的修饰符来修改SUBDIRS的默认行为。支持的修饰符有

修饰符效果
.subdir使用指定的子目录而不是SUBDIRS值。
.file明确指定子项目的pro文件。不能与.subdir修饰符一起使用。
.depends此子项目依赖于指定的子项目。
.makefile子项目的makefile。仅在使用makefile的平台上可用。
.target用于与该子项目相关的makefile目标的相关基本字符串。仅在使用makefile的平台上可用。

例如,定义两个子目录,这两个子目录位于SUBDIRS值不同的目录中,并且必须先构建其中一个子目录

SUBDIRS += my_executable my_library
my_executable.subdir = app
my_executable.depends = my_library
my_library.subdir = lib

TARGET

指定目标文件的名称。默认包含项目文件的基本名称。

例如

TEMPLATE = app
TARGET = myapp
SOURCES = main.cpp

上面的项目文件将生成在Unix上名为myapp以及在Windows上名为myapp.exe的可执行文件。

TARGET_EXT

指定TARGET的扩展名。此变量的值通常由qmake或qmake.conf处理,通常无需修改。

TARGET_x

指定带有主要版本号的TARGET的扩展名。此变量的值通常由qmake或qmake.conf处理,通常无需修改。

TARGET_x.y.z

指定带有版本号的TARGET的扩展名。此变量的值通常由qmake或qmake.conf处理,通常无需修改。

TEMPLATE

在生成项目时指定要使用的模板的名称。允许的值有

选项描述
app创建用于构建应用程序的 Makefile(默认)。有关更多信息,请参阅构建应用程序
lib创建用于构建库的 Makefile。有关更多信息,请参阅构建库
subdirs为子目录中的目标创建 Makefile。使用 SUBDIRS 变量指定子目录。
aux创建不构建任何内容的 Makefile。如果不需要调用编译器来创建目标(例如,因为项目使用解释型语言编写),请使用此选项。

注意:此模板类型仅适用于基于 Makefile 的生成器。特别是,它不适用于 vcxproj 和 Xcode 生成器。

vcapp仅限 Windows。为 Visual Studio 创建应用程序项目。有关更多信息,请参阅创建 Visual Studio 项目文件
vclib仅限 Windows。为 Visual Studio 创建库项目。

例如

TEMPLATE = lib
SOURCES = main.cpp
TARGET = mylib

可以通过指定新的模板类型来覆盖模板,使用带有 -t 命令行选项。它将在处理 .pro 文件后覆盖模板类型。对于使用模板类型来确定项目如何构建的 .pro 文件,有必要在命令行上声明 TEMPLATE 而不是使用 -t 选项。

TRANSLATIONS

指定包含用户界面文本的非原生语言翻译的翻译文件(.ts)列表。

TRANSLATIONS 中的翻译文件将由 lrelease使用 lupdate 工具处理。如果只想让 lrelease 处理文件,请使用 EXTRA_TRANSLATIONS

您可以使用CONFIG += lrelease在构建过程中自动编译文件,以及CONFIG += lrelease embed_translations让它们在Qt资源系统中可用。

有关使用Qt进行国际化和本地化的更多信息,请参阅Qt Linguist手册

TR_EXCLUDE

指定要从 lupdate 处理中排除的路径列表(源文件、子目录和 C++ 包含路径)。路径可以包含通配符。相对路径被视为相对于 _PRO_FILE_PWD_

例如,要排除源文件

SOURCES += main.cpp \
    excluded.cpp \
    3rdparty/sqlite3.h \
    3rdparty/sqlite3.c
TR_EXCLUDE += excluded.cpp 3rdparty/*

要排除 SUBDIRS 项目的子目录

SUBDIRS += \
    libs \
    apps \
    tests
TR_EXCLUDE += tests

为了加快 lupdate 的 C++ 解析器速度,排除包含路径

linux {
    TR_EXCLUDE += /usr/include/boost/*
}

UI_DIR

指定 uic 应放置所有中间文件(由 uic 创建的文件)的目录。

例如

unix:UI_DIR = ../myproject/ui
win32:UI_DIR = c:/myproject/ui

VERSION

如果指定了 app 模板,则指定应用程序的版本号;如果指定了 lib 模板,则指定库的版本号。

在 Windows 上,如果未设置 RC_FILERES_FILE 变量,则触发 .rc 文件的自动生成。生成的 .rc 文件将填充具有主版本号、次版本号、修补级别和构建号的 FILEVERSION 和 PRODUCTVERSION 条目。每个数字的范围必须是 0 到 65535。有关 .rc 文件生成的更多详细信息,请参阅 平台说明

例如

win32:VERSION = 1.2.3.4 # major.minor.patch.build
else:VERSION = 1.2.3    # major.minor.patch

VERSION_PE_HEADER

仅限 Windows。指定 Windows 连接器使用 /VERSION 选项将版本号放入 .exe 或 .dll 文件头部的版本号。只能指定主版本号和次版本号。如果未设置 VERSION_PE_HEADER,则回退到从 VERSION(如果已设置)的版本号。

VERSION_PE_HEADER = 1.2

VER_MAJ

如果指定了 lib 模板,则指定库的主版本号。

VER_MIN

如果指定了 lib 模板,则指定库的次要版本号。

VER_PAT

如果指定了 lib 模板,则指定库的补丁版本号。

VPATH

告诉 qmake 在何处搜索它无法打开的文件。例如,如果 qmake 查找 SOURCES 并发现一个无法打开的条目,它将遍历整个 VPATH 列表以查看它能否自己找到该文件。

参见 DEPENDPATH

WINDOWS_TARGET_PLATFORM_VERSION

指定目标 Windows 版本;这对应于 vcxproj 文件中的 WindowsTargetPlatformVersion 标签。

在桌面 Windows 上,默认值是环境变量 WindowsSDKVersion 的值。

WINDOWS_TARGET_PLATFORM_MIN_VERSION

指定目标 Windows 平台的最小版本;这对应于 vcxproj 文件中的 WindowsTargetPlatformMinVersion 标签。

默认值是 WINDOWS_TARGET_PLATFORM_VERSION

YACCSOURCES

指定要包含在项目中的 Yacc 源文件列表。所有依赖项、头文件和源文件将自动包含在项目中。

例如

YACCSOURCES = moc.y

_PRO_FILE_

包含正在使用的项目文件的路径。

例如,以下行将导致在控制台写下项目文件的当前位置

message($$_PRO_FILE_)

注意:不要尝试重写此变量的值。

_PRO_FILE_PWD_

包含正在使用的项目文件的目录的路径。

例如,以下行将导致在控制台写下包含项目文件的目录的当前位置

message($$_PRO_FILE_PWD_)

注意:不要尝试重写此变量的值。

参见QQmlEngine::addImportPath

© 2024 Qt 公司。本文件中包含的文档贡献者的版权属于他们自己。在此提供的文档是在 GNU自由文档许可证版本1.3 的条款下发布的,该许可证由自由软件基金会发布。Qt 和相应的标志是芬兰和/或其他国家的 Qt 公司的商标。所有其他商标都是其各自所有者的财产。