本页内容

变量

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

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

ANDROID_ABIS

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

指定 Android 目标 ABI 的列表。有效值为:armeabi-v7a、arm64-v8a、x86、x86_64。

您可以将 ABI 作为 qmake 参数提供:

qmake ANDROID_ABIS="armeabi-v7a arm64-v8a"

注意: 虽然可以在 *.pro 文件中使用此变量,但不建议这样做,因为这会覆盖在qmake 命令行中指定的任何 ABI。

ANDROID_API_VERSION

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

指定 Android API 级别编号。有关详细信息,请参阅Android 构建编号。

ANDROID_APPLICATION_ARGUMENTS

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

通过带有“android.app.arguments”标签的AndroidManifest.xml ,为 Android 应用指定额外的命令行参数。该变量接受一个参数字符串:

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 目标。

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

ANDROID_EXTRA_LIBS

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

将复制到应用程序的libs 文件夹中并在启动时加载的外部库列表。例如,可使用此功能在应用程序中启用 OpenSSL。有关详细信息,请参阅《为 Android 添加 OpenSSL 支持》。

若要为多个 ABI 包含外部库(每个 ABI 都有自己的目录),请使用以下方法:

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/")

并在 .qmake.conf 中将 top_builddir 定义为:

top_builddir=$$shadowed($$PWD)

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

然后,假设额外构建了一个名为 myplugin的图像格式插件,其路径为$$DESTDIR/plugins/myplugin/,以下配置可确保其被正确打包:

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 级别 37。

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自动生成一个.cpp 文件,其中包含.pro文件中指定的预编译头文件。
ordered在使用subdirs 模板时,此选项指定应按照所列目录的顺序进行处理。

注意: 不建议使用此 选项。请按照SUBDIRS变量文档中的说明指定依赖关系。

precompile_header启用项目中对预编译头文件的支持。
precompile_header_c(仅限 MSVC)启用对 C 文件中预编译头的使用支持。
warn_on编译器应输出尽可能多的警告。如果同时指定了warn_off ,则以最后一个设置为准。
warn_off编译器应尽可能少地输出警告。
exceptions启用异常支持。默认启用。
exceptions_off已禁用异常支持。
ltcg已启用链接时代码生成。此选项默认处于关闭状态。
rtti已启用 RTTI 支持。默认情况下,使用编译器的默认设置。
rtti_off已禁用 RTTI 支持。默认情况下,使用编译器的默认设置。
stl已启用 STL 支持。默认情况下,使用编译器的默认设置。
stl_off已禁用 STL 支持。默认情况下,将使用编译器的默认设置。
thread已启用线程支持。当 CONFIG 包含 `qt` 时,此功能会被启用,这是默认设置。
no_utf8_source指定该项目的源文件不使用UTF-8编码。取而代之的是,将使用编译器的默认设置。
hide_symbols将二进制文件中符号的默认可见性设置为隐藏。默认情况下,使用编译器的默认设置。
c99启用对 C99 的支持。如果编译器不支持 C99,或无法选择 C 标准,则此选项无效。默认情况下,采用编译器的默认设置。
c11启用对 C11 的支持。如果编译器不支持 C11 或无法选择 C 标准,则此选项无效。默认情况下,采用编译器的默认设置。
c17启用对 C17(也称为 C18)的支持。如果编译器不支持 C17,或者无法选择 C 标准,则此选项无效。默认情况下,使用编译器的默认设置。
c18这是c17 值的别名。
strict_c禁用对 C 编译器扩展的支持。默认情况下,这些扩展处于启用状态。
c++11启用 C++11 支持。如果编译器不支持 C++11 或无法选择 C++ 标准,则此选项无效。默认情况下,该功能处于启用状态。
c++14已启用对 C++14 的支持。如果编译器不支持 C++14 或无法选择 C++ 标准,则此选项无效。默认情况下,此功能已启用。
c++17已启用对 C++17 的支持。如果编译器不支持 C++17 或无法选择 C++ 标准,则此选项无效。默认情况下,此功能已启用。
c++1zc++17 的已废弃别名。
c++20已启用 C++20 支持。如果编译器不支持 C++20 或无法选择 C++ 标准,则此选项无效。默认情况下,该支持处于禁用状态。
c++2ac++20 的已弃用别名。
c++latest已启用对最新 C++ 语言标准的支持。此选项主要适用于支持 `/std:c++latest ` 编译器参数的 MSVC。对于其他工具链,此选项将启用 Qt 已知的最新 C++ 标准。默认情况下,此选项处于禁用状态。
strict_c++禁用对 C++ 编译器扩展的支持。默认情况下,这些扩展处于启用状态。
depend_includepath启用将 INCLUDEPATH 的值追加到 DEPENDPATH 的功能。默认已启用。
lrelease对TRANSLATIONS和EXTRA_TRANSLATIONS 中列出的所有文件运行 `lrelease `。如果未设置 `embed_translations `,则将生成的 .qm 文件安装到 `QM_FILES_INSTALL_PATH` 中。使用 `QMAKE_LRELEASE_FLAGS` 向 lrelease 调用中添加选项。默认未设置。
embed_translations将lrelease 生成的翻译嵌入可执行文件中,并存放在QM_FILES_RESOURCE_PREFIX下。此选项还要求lrelease 已设置。默认未设置。
create_libtool为当前构建的库创建一个 libtool .la 文件。
create_pc为当前构建的库创建一个 pkg-config .pc 文件。
no_batch仅限 NMake:关闭 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下的默认设置),项目将经过三次处理:一次用于生成“元”Makefile,另外两次用于生成Makefile.Debug和Makefile.Release。

在后两次处理过程中,会将build_pass 以及相应的debug 或release 选项追加到CONFIG 中。这使得执行特定于构建的任务成为可能。例如:

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

作为手动编写构建类型条件语句的替代方案,某些变量提供了构建特有的变体,例如除通用QMAKE_LFLAGS 之外的QMAKE_LFLAGS_RELEASE。如有可用,应优先使用这些变量。

该元 Makefile 允许通过debug 和release 目标调用子构建,并通过all 目标进行合并构建。当使用build_all CONFIG 选项时,默认执行合并构建。否则,该选项集(debug 、release )中最后指定的CONFIG 选项将决定默认行为。在此情况下,您可以显式调用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 窗口应用程序(仅限应用程序)。系统会自动将正确的包含路径、编译器标志和库添加到项目中。
console目标为 Win32 控制台应用程序(仅限应用程序)。系统会自动将正确的包含路径、编译器选项和库添加到项目中。对于跨平台应用程序,请考虑使用cmdline 选项。
cmdline目标为跨平台命令行应用程序。在 Windows 系统上,这表示使用 `CONFIG += console`;在 macOS 系统上,这表示使用 `CONFIG -= app_bundle`。
shared目标是一个共享对象/DLL。相应的包含路径、编译器标志和库将自动添加到项目中。请注意,dll 也可用于所有平台;系统将生成一个带有目标平台相应后缀(.dll 或 .so)的共享库文件。
dll
static目标为静态库(仅 lib)。系统会自动将正确的编译器标志添加到项目中。
staticlib
plugin目标是一个插件(仅限库)。这同时也会启用 DLL 功能。
designer目标是Qt Widgets Designer 的插件。
no_lflags_merge确保在使用前,存储在LIBS 变量中的库列表不会被缩减为唯一值的列表。
metatypes为当前项目创建一个<name>_metatypes.json 文件。<name> 是TARGET 的全小写基础名称。
qmltypes自动注册在 C++ 中定义的 QML 类型。有关详细信息,请参阅《从 C++ 定义 QML 类型》。此外,为当前项目创建一个<template>.qmltypes 文件。如果设置了plugin ,则<template> 将为plugins (出于历史原因采用复数形式);否则,其值为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
}

DEFINES

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

例如:

DEFINES += USE_MY_STUFF

DEFINES_DEBUG

指定调试配置的预处理器定义。项目加载后,该变量的值将被添加到DEFINES 中。该变量通常在qmake.conf中设置,通常无需修改。

该变量于 Qt 5.13.2 版本中引入。

DEFINES_RELEASE

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

注意:对于 MSVC 的 mkspec,该变量默认包含值NDEBUG 。

该变量在 Qt 5.13.2 中引入。

DEF_FILE

注意: 仅在使用app 模板时,此 变量才在 Windows 上使用。

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

DEPENDPATH

指定 qmake 用于扫描以解析依赖关系的目录列表。当 qmake 遍历您在源代码中#include 的头文件时,会使用此变量。

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 国际化 (i18n) 和本地化 (l10n) 的更多信息,请参阅《Qt Linguist 手册》。

FORMS

指定在编译前由uic 处理的 UI 文件(参见《Qt Widgets 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 项目生成,将指定的文件放入“Generated Files”文件夹中。

INCLUDEPATH

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

例如:

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

若要指定包含空格的路径,请按照“空格”部分所述的方法使用引号将路径括起来。

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

INSTALLS

指定在执行 `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 库所在的目录。

例如:

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 中的库列表在使用前会被简化为唯一名称的列表。若要更改此行为,请在CONFIG变量中添加no_lflags_merge 选项:

CONFIG += no_lflags_merge

LIBS_PRIVATE

指定要私有链接到项目中的库列表。该变量的行为与LIBS 完全相同,唯一区别在于:为 Unix 构建的共享库项目不会在其链接接口中暴露这些依赖关系。

其效果是:如果项目 C 依赖于库 B,而库 B 私有地依赖于库 A,但项目 C 还希望直接使用库 A 中的符号,则需要显式地链接库 A。换言之,私有链接的库在构建时不会通过传递关系被暴露出来。

LITERAL_HASH

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

例如:

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

通过这种方式使用LITERAL_HASH ,# 字符可用于构建 URL,供message() 函数将其打印到控制台。

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 模块设置了自定义位置,可以在此处指定该位置。

注意: QMLPATHS 中的路径条目指向 QML 模块树的根目录。这是 QML 引擎所理解的导入路径概念。 您可以通过QML_IMPORT_PATH 环境变量将相同的路径传递给您的QML应用程序,但它们与qmake变量 QML_IMPORT_PATH的预期内容不同。后者仅期望包含由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.h 和path/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

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

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

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

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

例如,当使用旧版构建系统构建以下项目代码片段时:

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

Xcode 将忽略 `InfoPlist.strings ` 的原始位置,并将文件放置在包的 `Resources ` 目录下,路径为 `translations_en.path `,因此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_DEBUG 和QMAKE_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 配置选项时,才会使用此变量。该变量的值通常由 qmake 或qmake.conf处理,很少需要修改。

QMAKE_CFLAGS_WARN_ON

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

QMAKE_CLEAN

指定由make clean 删除的生成的文件(例如由moc和uic 生成的)和目标文件列表。

QMAKE_CXX

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

QMAKE_CXXFLAGS

指定用于构建项目的 C++ 编译器标志。该变量的值通常由 qmake 或qmake.conf处理,很少需要修改。针对调试模式和发布模式的特定标志,可分别通过修改QMAKE_CXXFLAGS_DEBUG 和QMAKE_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 Widgets 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 ES 2 的目标时,应添加到INCLUDEPATH中的 OpenGL 头文件的位置。

该变量的值通常由 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_PREFIX 和QMAKE_BUNDLE 的值通过句点(. )连接而成。QMAKE_BUNDLE 的值源自QMAKE_APPLICATION_BUNDLE_NAME 、QMAKE_PLUGIN_BUNDLE_NAME 或QMAKE_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

当 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 OpenGL 或 Qt XML 时,指定所有 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 基础上实现的。这将在 configure 阶段被检测到,并且无论在何处链接 OpenVG 库,QMAKE_LIBS_OPENGL 都会被隐式地添加到 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时,传递给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

该变量用于自定义传递给 Resource Compiler 在每个使用该变量的构建规则中传递的选项列表。例如,以下代码行可确保每次调用 `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 标识符之前。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。指定项目目标所属的公司;在适用情况下,此参数用于将公司名称填入应用程序的属性中。仅当设置了VERSION或RC_ICONS变量,且未设置RC_FILE和RES_FILE变量时,才会使用此参数。

QMAKE_TARGET_DESCRIPTION

仅限 Windows。指定项目目标的描述;在适用情况下,该参数用于将描述填入应用程序的属性中。仅当设置了VERSION或RC_ICONS变量,且未设置RC_FILE和RES_FILE变量时,才会使用此参数。

仅限 Windows。指定项目目标的版权信息;在适用情况下,该信息将用于填充应用程序的属性。仅当设置了VERSION或RC_ICONS变量,且未设置RC_FILE和RES_FILE变量时,才会使用此参数。

QMAKE_TARGET_PRODUCT

仅限 Windows。指定项目目标的产品;在适用情况下,该参数用于将产品信息写入应用程序的属性中。仅当VERSION或RC_ICONS变量已设置,且RC_FILE和RES_FILE变量未设置时,才会使用此参数。

QMAKE_TARGET_ORIGINAL_FILENAME

仅限 Windows。指定项目目标的原始文件名;在适用情况下,该值将用于在应用程序的属性中设置原始文件名。仅当VERSION或RC_ICONS变量已设置,且RC_FILE和RES_FILE变量未设置时,才会使用该值。

QMAKE_TARGET_INTERNALNAME

仅限 Windows。指定项目目标的内部名称;在适用情况下,该名称将用于填充应用程序的属性。仅当设置了VERSION或RC_ICONS变量,且未设置RC_FILE和RES_FILE变量时,才会使用此变量。

QMAKE_TARGET_COMMENTS

仅限 Windows。指定项目目标的注释;在适用情况下,该值将用于将注释填入应用程序的属性中。仅当VERSION或RC_ICONS变量已设置,且RC_FILE和RES_FILE变量未设置时,此变量才会被使用。

QMAKE_TARGET_TRADEMARKS

仅限 Windows。指定项目目标的商标信息;在适用时,该信息将用于在应用程序的属性中添加商标信息。仅当设置了VERSION或RC_ICONS变量,且未设置RC_FILE和RES_FILE变量时,才会使用此参数。

QMAKE_MANIFEST

仅限 Windows。指定项目目标的清单文件。仅当RC_FILE和RES_FILE变量未设置时才会使用此选项。请务必从 CONFIG 变量中移除 embed_manifest_exe 和 embed_manifest_dll,否则会与编译器生成的清单发生冲突。

QMAKE_TVOS_DEPLOYMENT_TARGET

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

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

有关详细信息,请参阅《表达支持的 iOS 版本》。

QMAKE_UIC_FLAGS

此变量用于自定义传递给 User Interface Compiler 。

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_VERSION和QML_IMPORT_MINOR_VERSION指定为<major>.<minor> 版本字符串。

QML_IMPORT_NAME

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

QML_FOREIGN_METATYPES

指定在生成 qmltypes 文件时需考虑的包含元类型的其他 JSON 文件。当外部库提供的类型直接暴露给 QML,或作为其他类型的基类型或属性时,请使用此选项。Qt 类型将被自动考虑,无需在此处添加。

QT

指定项目中使用的Qt 模块。关于每个模块应添加的值,请参阅模块文档。

在 C++ 实现层面上,使用某个 Qt 模块会使其头文件可供包含,并导致该模块被链接到二进制文件中。

默认情况下,QT 包含core 和gui ,这确保了标准GUI应用程序无需额外配置即可构建。

如果您希望在不包含Qt GUI ,则需要使用“-=”运算符排除gui 值。以下代码行将生成一个最简的 Qt 项目:

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

如果您的项目是Qt Widgets Designer 插件,请使用uiplugin 值来指定该项目应作为库进行构建,但需包含针对Qt Widgets 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 文件中指定的代码页。仅当设置了VERSION或RC_ICONS变量,且未设置RC_FILE和RES_FILE变量时,才会使用此参数。

RC_DEFINES

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

RC_DEFINES += USE_MY_STUFF

RC_ICONS

仅限 Windows。指定应包含在生成的 .rc 文件中的图标。仅当RC_FILE和RES_FILE变量均未设置时,此选项才会被使用。有关 .rc 文件生成的更多详细信息,请参阅《平台说明》。

RC_LANG

仅限 Windows。指定应包含在生成的 .rc 文件中的语言。仅当设置了VERSION或RC_ICONS变量,且未设置RC_FILE和RES_FILE变量时,此变量才会被使用。

RC_INCLUDEPATH

指定传递给 WindowsResource Compiler 的包含路径。

RCC_DIR

指定 Qt XMLResource Compiler 输出文件的目录。

例如:

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

REQUIRES

指定一组将作为条件进行评估的值。如果任何一个条件为假,qmake 在构建时将跳过该项目(及其SUBDIRS)。

注意: 若要在构建时跳过项目或子项目,建议 改用requires()函数。

RESOURCES

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

RES_FILE

仅限 Windows。指定此目标的 Windows Resource Compiler 输出文件的名称。请参阅RC_FILE和《添加 Windows 资源文件》。

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

SOURCES

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

关于被包含的源文件的说明

默认情况下,QMake 会扫描源文件以检测依赖关系,并自动排除被其他 .cpp 文件包含的 .cpp 文件,以防止重复编译和链接器错误。这种自动排除机制存在以下重要限制:

  • 无论预处理器条件语句(#ifdef 、#ifndef 等)如何,都会进行排除。
  • 项目中任何位置包含#included 的.cpp文件都将被排除在SOURCES 之外,即使该包含是条件性的。

若要强制编译被排除的文件,请在 .pro 文件中添加CONFIG += compile_included_sources 。或者,将这些文件从 SOURCES 中移除,并确保它们仅通过包含它们的文件进行编译。此规则适用于所有扩展名在QMAKE_EXT_CPP 中的文件。

例如:

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_executable 之前先构建my_library ,并在构建tests 之前先构建my_executable 。不过,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 选项。

翻译

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

位于TRANSLATIONS 目录下的翻译文件将同时由lrelease和lupdate工具处理。若仅希望lrelease 处理某个文件,请使用EXTRA_TRANSLATIONS。

您可以使用CONFIG += lrelease在构建过程中自动编译这些文件,并使用CONFIG += lrelease embed_translations将其纳入Qt 资源系统。

有关 Qt 国际化 (i18n) 和本地化 (l10n) 的更多信息,请参阅《Qt Linguist 手册》。

TR_EXCLUDE

指定一组路径(源文件、子目录和 C++ 包含路径),这些路径将被排除在lupdate 的处理范围之外。路径中可以包含通配符。相对路径被视为相对于_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 生成的所有中间文件应放置的目录。

例如:

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

VERSION

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

在 Windows 系统上,如果未设置RC_FILE和RES_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若指定了xml-ph-0000@deepl.internal模板,则指定库的小版本号。

如果指定了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()。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.