变量
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
的大小,可以使用 this 变量覆盖自动检测。该变量应包含一个需要包含的所有 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 目标。
指定应用程序必须捆绑但无法通过 assets 系统交付的 C++ 插件或资源(如 QML 插件)的路径。有了这个变量,androiddeployqt将确保一切都已打包并正确部署。
ANDROID_EXTRA_PLUGINS
必须指向构建额外插件的目录。此外,编译目录结构必须遵循与 Qt 插件类似的命名约定,即plugins/<插件名称>。
插件库的名称格式应为libplugins_<type>_<name>_<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)应用正确的名称混淆。
然后,假设以$$DESTDIR/plugins/myplugin/ 的方式构建了额外的图像格式插件 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 级别 35。
android_version_code
注意: 此变量仅适用于 Android 目标。
指定应用程序的版本号。有关详细信息,请参阅Android 应用程序版本。
版本名称
注意: 此变量仅适用于 Android 目标机。
以人类可读字符串的形式指定应用程序的版本。有关详细信息,请参阅Android 应用程序版本管理。
配置
指定项目配置和编译器选项。这些值由 qmake 内部识别,具有特殊含义。
注意: 这些值区分大小写。
以下CONFIG
值控制编译器和链接器标志:
选项 | 说明 |
---|---|
release | 项目将以 release 模式编译。如果还指定了debug ,则最后一个生效。 |
调试 | 项目将以调试模式构建。 |
debug_and_release | 项目准备以调试模式和发布模式联编。 |
debug_and_release_target | 该选项为默认设置。如果debug_and_release 也被设置,则调试和发布联编最终会分别位于不同的调试和发布目录中。 |
全部编译 | 如果指定debug_and_release ,则默认以调试模式和发布模式联编项目。 |
autogen_precompile_source | 自动生成包含 .pro 文件中指定的预编译头文件的.cpp 文件。 |
命令 | 在使用subdirs 模板时,该选项指定按照所给的顺序处理列出的目录。注意: 不建议使用该选项。请按照SUBDIRS变量文档中的说明指定依赖关系。 |
预编译头 | 启用对项目中使用预编译头文件的支持。 |
precompile_header_c(仅限 MSVC) | 启用对 C 文件使用预编译头文件的支持。 |
警告 | 编译器应尽可能多地输出警告。如果同时指定了warn_off ,则最后一个警告生效。 |
warn_off | 编译器应尽可能少地输出警告。 |
异常 | 启用异常支持。默认设置。 |
exceptions_off | 禁用异常支持。 |
ltcg | 启用链接时间代码生成。该选项默认为关闭。 |
rtti | 启用 RTTI 支持。默认情况下,使用编译器默认值。 |
rtti_off | 禁用 RTTI 支持。默认情况下,使用编译器的默认设置。 |
STL | 启用 STL 支持。默认情况下,使用编译器的默认设置。 |
stl_off | 禁用 STL 支持。默认情况下,使用编译器的默认设置。 |
线程 | 启用线程支持。当 CONFIG 包括qt 时启用,默认情况下是 。 |
no_utf8_source | 指定项目的源文件不使用 UTF-8 编码。取而代之的是使用编译器默认编码。 |
隐藏符号 | 将二进制文件中符号的默认可见性设置为隐藏。默认情况下,使用编译器默认值。 |
c99 | 启用 C99 支持。如果编译器不支持 C99 或无法选择 C 标准,则此选项无效。默认情况下,使用编译器默认值。 |
c11 | 启用 C11 支持。如果编译器不支持 C11 或无法选择 C 标准,该选项将不起作用。默认情况下,使用编译器默认值。 |
c17 | 启用 C17(也称 C18)支持。如果编译器不支持 C17 或无法选择 C 标准,则该选项无效。默认情况下,使用编译器默认值。 |
c18 | 这是c17 值的别名。 |
严格_c | 禁用对 C 编译器扩展的支持。默认情况下启用。 |
c++11 | 启用 C++11 支持。如果编译器不支持 C++11 或无法选择 C++ 标准,则此选项无效。默认情况下,支持已启用。 |
c++14 | 启用 C++14 支持。如果编译器不支持 C++14,或无法选择 C++ 标准,该选项将不起作用。默认情况下,支持已启用。 |
c++17 | 启用 C++17 支持。如果编译器不支持 C++17,或无法选择 C++ 标准,该选项将不起作用。默认情况下,支持已启用。 |
c++1z | c++17 的过时别名。 |
c++20 | 启用 C++20 支持。如果编译器不支持 C++20 或无法选择 C++ 标准,则此选项无效。默认情况下不支持。 |
c++2a | c++20 的过时别名。 |
c++latest | 启用对最新 C++ 语言标准的支持。该选项主要适用于支持/std:c++latest 编译器参数的 MSVC。对于其他工具链,该选项会启用 Qt 已知的最新 C++ 标准。默认情况下,该选项是禁用的。 |
strict_c++ | 禁用对 C++ 编译器扩展的支持。默认情况下启用。 |
依赖包含路径 | 启用将 INCLUDEPATH 的值追加到 DEPENDPATH。默认设置。 |
lrelease | 为TRANSLATIONS和EXTRA_TRANSLATIONS 中列出的所有文件运行lrelease 。如果没有设置embed_translations ,则将生成的 .qm 文件安装到 QM_FILES_INSTALL_PATH。使用 QMAKE_LRELEASE_FLAGS 为 lrelease 调用添加选项。默认不设置。 |
嵌入翻译 | 将从lrelease 生成的翻译嵌入可执行文件,位于QM_FILES_RESOURCE_PREFIX 下。需要同时设置lrelease 。默认未设置。 |
创建 libtool | 为当前构建的库创建 libtool .la 文件。 |
创建 pkg 配置文件 | 为当前联编的库创建 pkg-config .pc 文件。 |
无批处理 | 仅限 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_RELEASE和QMAKE _ LFLAGS。如果这些变量可用, 则应加以使用。
元 Makefile 通过debug
和release
目标调用子编译,并通过all
目标调用组合编译。当使用build_all
CONFIG
选项时,默认情况下是合并编译。否则,将由最后指定的CONFIG
选项集(debug
,release
)决定默认值。在这种情况下,可以显式调用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 应用程序或库。适当的包含路径和库将自动添加到项目中。 |
测试用例 | 目标是自动测试。将在生成的 Makefile 中添加一个检查目标以运行测试。仅与生成 Makefile 时相关。 |
不重要的测试 | 自动测试的退出代码将被忽略。只有同时设置testcase 时才相关。 |
窗口 | 目标是 Win32 窗口应用程序(仅限应用程序)。适当的包含路径、编译器标志和库将自动添加到项目中。 |
控制台 | 目标是 Win32 控制台应用程序(仅限应用程序)。适当的包含路径、编译器标志和库将自动添加到项目中。对于跨平台应用程序,请考虑使用cmdline 选项。 |
cmdline | 目标是跨平台命令行应用程序。在 Windows 上,这意味着CONFIG += console 。在 macOS 上,这意味着CONFIG -= app_bundle 。 |
共享 | 目标是共享对象/DLL。适当的包含路径、编译器标志和库将自动添加到项目中。请注意,dll 也可用于所有平台;将创建一个共享库文件,其后缀为目标平台的相应后缀(.dll 或 .so)。 |
dll | |
静态 | 目标是静态库(仅 lib)。适当的编译器标志将自动添加到项目中。 |
静态库 | |
插件 | 目标是一个插件(仅限库)。这也会启用 dll。 |
设计器 | 目标是Qt Widgets Designer 插件。 |
no_lflags_merge | 确保存储在LIBS 变量中的库列表在使用前不会缩减为唯一值列表。 |
元类型 | 为当前项目创建<name>_metatypes.json 文件。<name> 是TARGET 的全小写基本名称。 |
qmltypes | 自动注册用 C++ 定义的 QML 类型。更多信息,请参阅从 C++ 定义 QML 类型。同时,为当前项目创建<template>.qmltypes 文件。如果设置了plugin ,<template> 将是plugins (复数,出于历史原因),否则将是TEMPLATE的值。qmltypes 意味着metatypes 。 |
这些选项仅在 Windows 上定义特定功能:
选项 | 说明 |
---|---|
平面 | 使用 vcapp 模板时,无论源文件和头文件位于哪个目录,都将把它们放入源文件组和头文件组。关闭该选项后,将根据文件所在的目录在源文件/头文件组中对文件进行分组。该选项默认为打开。 |
embed_manifest_dll | 在作为库项目一部分创建的 DLL 中嵌入清单文件。 |
embed_manifest_exe | 在作为应用程序项目一部分创建的 EXE 中嵌入清单文件。 |
有关嵌入清单文件选项的更多信息,请参阅Platform Notes。
以下选项仅对 macOS 有效:
选项 | 说明 |
---|---|
app_bundle | 将可执行文件放入捆绑包(默认值)。 |
lib_bundle | 将库放入库捆绑包。 |
插件捆绑包 | 将插件放入插件捆绑包。Xcode 项目生成器不支持该值。 |
捆绑包的构建过程也受QMAKE_BUNDLE_DATA变量内容的影响。
以下选项仅在 Linux/Unix 平台上生效:
选项 | 说明 |
---|---|
大文件 | 包括对大文件的支持。 |
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
为 release 配置指定预处理器定义。此变量的值会在项目加载后添加到DEFINES中。此变量通常在qmake.conf中设置,很少需要修改。
注意: 对于 MSVC mkspecs,该变量默认值为NDEBUG
。
该变量在 Qt 5.13.2 中引入。
DEF_FILE
注意: 该变量仅在 Windows 下使用app
模板时使用。
指定要包含在项目中的.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 Resource Compiler System 中提供这些文件。
有关 Qt 国际化 (i18n) 和本地化 (l10n) 的更多信息,请参阅Qt Linguist Manual。
格式
指定uic
在编译前要处理的 UI 文件(参见Qt Widgets Designer 手册)。编译这些 UI 文件所需的所有依赖项、头文件和源文件都将自动添加到项目中。
例如
FORMS = mydialog.ui \ mywidget.ui \ myconfig.ui
GUID
指定在.vcproj
文件中设置的 GUID。GUID 通常是随机确定的。不过,如果需要固定的 GUID,也可以使用此变量进行设置。
该变量仅适用于.vcproj
文件,否则将被忽略。
头文件
定义项目的头文件。
qmake 会自动检测头文件中的类是否需要moc,并将适当的依赖关系和文件添加到项目中,以便生成和链接 moc 文件。
例如
HEADERS = myclass.h \ login.h \ mainwindow.h
另请参阅SOURCES。
图标
该变量仅用于 Mac OS,以设置应用程序图标。更多信息请参阅应用程序图标文档。
IDLSOURCES
该变量仅在 Windows 下用于 Visual Studio 项目生成,以将指定文件放入生成文件文件夹。
INCLUDEPATH
指定编译项目时应搜索的 #include 目录。
例如
INCLUDEPATH = c:/msdev/include d:/stl/include
要指定包含空格的路径,请使用 "Whitespace"(空白)中描述的技术引用路径。
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 文件,请使用此配置值。 |
脱行 | 如果设置,典型的 Unix 脱模功能将被关闭,调试信息将保留在二进制文件中。 |
可执行 | 在 Unix 上,此选项设置可执行标志。 |
no_build | make 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
若要指定包含空格的路径,请使用 "Whitespace"(空格)一文中描述的技巧引用路径。
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 依赖于私自依赖于库 A 的库 B,但 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
,可以使用#
字符为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。
对象
该变量由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 项目文件的生成器)不支持此变量。一般来说,这些联编工具内部都支持此变量,它对于明确列出依赖的静态库非常有用。
该列表会放在所有内置依赖库之前。
预编译头文件
表示用于创建预编译头文件的头文件,以提高项目的编译速度。预编译头文件目前仅在某些平台上受支持(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 应用程序,但它们与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.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
选项时,将创建库捆绑包。
有关创建库捆绑包的更多信息,请参阅Platform Notes。
项目也可以使用该变量捆绑应用程序翻译文件。具体语法取决于项目使用的是 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
路径下的 bundleResources
目录中,因此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
请参阅QTBUG-98417,了解有关 Xcode 构建系统如何更改其捆绑翻译文件行为的更多详情。
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处理, 很少需要修改。调试模式和 release 模式的特定标志可分别通过修改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
为force_debug_info
被设置为CONFIG
的 release 版本指定 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
删除的生成文件 (例如由moc和uic 生成的文件) 和对象文件的列表。
QMAKE_CXX
指定在构建包含 C++ 源代码的项目时将使用的 C++ 编译器。只需指定编译器可执行文件的文件名, 只要它在处理 Makefile 时位于PATH
变量中的路径上即可。
QMAKE_CXXFLAGS
指定用于联编项目的 C++ 编译器标志。这个变量的值通常由 qmake 或qmake.conf处理, 很少需要修改。调试模式和 release 模式的特定标志可分别通过修改QMAKE_CXXFLAGS_DEBUG
和QMAKE_CXXFLAGS_RELEASE
变量来调整。
qmake_cxxflags_debug
指定用于调试联编的 C++ 编译器标志。这个变量的值通常由 qmake 或qmake.conf处理,很少需要修改。
qmake_cxxflags_release
为 release 版本的联编指定 C++ 编译器标志。此变量的值通常由 qmake 或qmake.conf处理,很少需要修改。
qmake_cxxflags_release_with_debuginfo
为force_debug_info
设置为CONFIG
的 release 版本指定 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@ | 扩展为目标 bundle 的 bundle 标识符字符串,例如: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_lflags_rpathlink
指定使用QMAKE_RPATHLINKDIR 值所需的链接器标志。
这个变量的值通常由 qmake 或qmake.conf处理, 很少需要修改。
qmake_lflags_release
指定发行版联编的链接器标志。此变量的值通常由 qmake 或qmake.conf处理,很少需要修改。
qmake_lflags_release_with_debuginfo
为force_debug_info
被设置为CONFIG
的 release 版本指定链接器标志。此变量的值通常由 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 时指定所有 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处理, 很少需要修改。
QMAKE_LINK
指定构建基于应用程序的项目时使用的链接器。只需指定链接器可执行文件的文件名, 只要它在处理 Makefile 时位于PATH
变量所包含的路径上即可。这个变量的值通常由 qmake 或qmake.conf处理,很少需要修改。
qmake_link_shlib_cmd
指定创建共享库时要执行的命令。此变量的值通常由 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 项目无效。
QMAKE_PRE_LINK
指定在将TARGET链接到一起之前要执行的命令。此变量通常为空,因此不会执行任何命令。
警告: 使用 Xcode 生成器和新的 Xcode 构建系统时不支持此变量。
qmake_project_name
注意: 此变量仅用于 Visual Studio 项目文件。
在为集成开发环境生成项目文件时决定项目的名称。默认值为目标名称。此变量的值通常由 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 命令定义的路径。 |
可执行路径 | 扩展到当前进程的可执行文件位置。 |
@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变量时,才会使用此变量。
qmake_target_COPYright
仅适用于 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 类型时,使用此次要版本注册模块的附加版本。一般来说,要注册的次要版本是从元对象(meta objects)中推断出来的。
如果元对象未变,但仍想导入较新次要版本号的 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
,确保无需进一步配置即可构建标准图形用户界面应用程序。
如果要构建不包含 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
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
指定 QtResource Compiler 输出文件的目录。
例如
unix:RCC_DIR = ../myproject/resources win32:RCC_DIR = c:/myproject/resources
REQUIRES
指定作为条件进行评估的值列表。如果其中任何一个条件为假,qmake 将在联编时跳过该项目(及其子目录)。
注意: 如果您想在编译时跳过项目或子项目,我们建议您使用requires()函数。
资源
指定目标的资源收集文件 (qrc) 的名称。有关资源收集文件的更多信息,请参阅Qt 资源系统。
RES_FILE
仅限 Windows。为该目标指定 Windows 资源编译器输出文件的名称。请参阅RC_FILE和添加 Windows 资源文件。
此变量的值通常由 qmake 或qmake.conf处理,很少需要修改。
源文件
指定项目中所有源文件的名称。
例如
SOURCES = myclass.cpp \ login.cpp \ mainwindow.cpp
另请参阅HEADERS。
子目录
该变量与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
目标
指定目标文件的名称。默认情况下包含项目文件的基本名称。
例如
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处理,很少需要修改。
模板
指定生成项目时使用的模板名称。允许的值有
选项 | 说明 |
---|---|
应用程序 | 创建用于构建应用程序的 Makefile(默认)。更多信息,请参阅 "构建应用程序"。 |
lib | 创建用于构建库的 Makefile。更多信息,请参阅构建库。 |
子目录 | 创建用于编译子目录中目标的 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和Using lupdate工具处理。如果只希望lrelease
处理文件,请使用EXTRA_TRANSLATIONS。
您可以使用CONFIG += lrelease在构建过程中自动编译这些文件,并使用CONFIG += lrelease embed_translations在The Qt Resource Compiler System 中提供这些文件。
有关 Qt 的国际化 (i18n) 和本地化 (l10n) 的更多信息,请参阅Qt Linguist Manual。
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++ 解析器,请排除 include 路径:
linux { TR_EXCLUDE += /usr/include/boost/* }
UI_DIR
指定存放 uic 所有中间文件的目录。
例如
unix:UI_DIR = ../myproject/ui win32:UI_DIR = c:/myproject/ui
版本
如果指定app
模板,则指定应用程序的版本号;如果指定lib
模板,则指定库的版本号。
在 Windows 系统中,如果未设置RC_FILE和RES_FILE变量,则会触发自动生成 .rc 文件。生成的 .rc 文件将在 FILEVERSION 和 PRODUCTVERSION 项中填入主版本、次版本、补丁级和版本号。每个数字的范围必须在 0 到 65535 之间。有关生成 .rc 文件的更多详情,请参阅Platform Notes。
例如
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()。
© 2025 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.