qmake 手册 012 变量

qmake 的基本行为受到定义于每个项目中的构建过程的变量声明的影响。其中一些声明资源(如头文件和源文件)对于每个平台都是通用的。其他的用于定制特定平台上的编译器和链接器的行为。

特定于平台的变量遵循它们扩展或修改的变量的命名模式,但是在它们的名称中包含相关平台的名称。例如,一个 makespec 可以使用 QMAKE_LIBS 来指定每个项目需要链接的库的列表,并使用 QMAKE_LIBS_X11 来扩展这个列表。

1. 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 only)
支持对C文件使用预编译头文件
warn_on 编译器应该输出尽可能多的警告。如果还指定了warn_off,则最后指定的生效
warn_off 编译器应该输出尽可能少的警告
exceptions 启用异常支持。默认设置
exceptions_off 异常支持被禁用
ltcg 链接时间代码生成(Link time code generation)已启用。这个选项在默认情况下是关闭的
rtti RTTI 支持已启用。默认情况下,使用编译器默认值
rtti_off RTTI 支持被禁用。默认情况下,使用编译器默认值
stl STL 支持已启用。默认情况下,使用编译器默认值
stl_off STL 支持被禁用。默认情况下,使用编译器默认值
thread 启用线程支持。当 CONFIG 包含 qt (这是默认值) 时启用此功能
utf8_source 指定项目的源文件使用 UTF-8 编码。默认情况下,使用编译器默认值
hide_symbols 将二进制文件中符号的默认可见性设置为隐藏。默认情况下,使用编译器默认值
c99 启用 C99 支持。如果编译器不支持 C99,或者不能选择 C 标准,这个选项没有任何作用。默认情况下,使用编译器默认值
c11 启用 C11 支持。如果编译器不支持 C11,或者不能选择 C 标准,则此选项无效。默认情况下,使用编译器默认值
strict_c 禁用对 C 编译器扩展的支持。默认情况下,它们是启用的
c++11 启用 C++ 11 支持。如果编译器不支持 C++ 11,或者不能选择 C++ 标准,则此选项无效。默认情况下,支持是启用的
c++14 启用 C++ 14 支持。如果编译器不支持 C++ 14,或者不能选择 C++ 标准,则此选项无效。默认情况下,支持是启用的
c++1z 启用 C++ 17 支持。如果编译器不支持 C++ 17,或者不能选择 C++ 标准,则此选项无效。默认情况下,支持是启用的
c++17 同 c++1z
c++2a 启用 C++ 2a 支持。如果编译器不支持 C++ 2a,或者不能选择 C++ 标准,则此选项无效。默认情况下,支持是启用的
c++latest 支持由编译器支持的最新 C++ 语言标准。默认情况下,此选项是禁用的
strict_c++ 禁用对c++编译器扩展的支持。默认情况下,它们是启用的
depend_includepath 启用将 INCLUDEPATH 的值附加到 DEPENDPATH。默认设置
lrelease TRANSLATIONSEXTRA_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

当我们使用 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_RELEASE 和一般的 QMAKE_LFLAGS。这些应该在可用时使用。

元 Makefile 通过 debug 和 release 目标来调用子构建,通过 all 目标来组合构建。当使用 build_all 作为 CONFIG 选项时,组合构建是默认的。否则,设置 (debug, release)中最后指定的 CONFIG 选项将确定默认值。在这种情况下,我们可以显式地调用 all 目标来一次性构建两个配置

make all

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

当链接一个库时,qmake 依赖于底层平台来了解这个库所链接的其他库。但是,如果静态链接,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 中以运行测试。只在生成 Makefiles 时有效
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 目标是一个插件(仅限 lib)。这也启用了 dll
designer 目标是 Qt Designer 的插件
no_lflags_merge 确保存储在 LIBS 变量中的库列表在使用之前不会被缩减为惟一值列表

下面这些选项是只在 Windows 上定义特定的功能:

选项 描述
flat 当使用 vcapp 模板时,这将把所有源文件放到源文件组中,而把头文件放到头文件组中,不管它们位于哪个目录中。关闭此选项将根据驻留的目录将文件分组到源/头文件组中。这是默认打开的
embed_manifest_dll 在作为库项目的一部分创建的 DLL 中嵌入清单文件
embed_manifest_exe 在作为应用程序项目的一部分创建的 EXE 中嵌入清单文件

有关嵌入清单文件的选项的更多信息,请参见 平台相关事项

以下选项仅对 macOS 有效:

选项 描述
app_bundle 将可执行文件放入一个包中(这是缺省值)
lib_bundle 将库放入库包中
plugin_bundle 将插件放入插件包中。Xcode 项目生成器不支持此值

bundle 的构建过程还受到 QMAKE_BUNDLE_DATA 变量内容的影响

以下选项仅在 Linux/Unix 平台上有效:

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

解析作用域时,还将检查 CONFIG 变量。我们可以为此变量分配任何内容。

例如:

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

2. DEFINES

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

例如:

DEFINES += USE_MY_STUFF

3. DEFINES_DEBUG

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

这个变量是在 Qt 5.13.2 中引入的。

4. DEFINES_RELEASE

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

注意: 对于 MSVC mkspecs,这个变量在默认情况下包含值 NDEBUG

这个变量是在 Qt 5.13.2 中引入的。

5. DEF_FILE

注意: 这个变量只在 Windows 平台上使用 app 模板时使用。

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

6. DEPENDPATH

指定 qmake 要扫描的目录列表,以解析依赖项。当 qmake 遍历源代码中 #include 的头文件时,将使用此变量。

7. DESTDIR

指定将目标文件放在何处
例如:

DESTDIR = ../../lib

注意:支持的字符列表可以依赖于使用的生成工具。特别是,括号不适用于 make。

8. DISTFILES

指定要包含在 dist 目标中的文件列表。该特性只受 UnixMake 规范支持
例如:

DISTFILES += ../program.txt

9. DLLDESTDIR

注意: 这个变量只适用于 Windows 平台目标

指定复制目标(target ) dll 的位置

10. EXTRA_TRANSLATIONS

指定翻译(.ts)文件列表,其中包含将用户界面文本翻译为非本机语言的内容。

TRANSLATIONS 不同,EXTRA_TRANSLATIONS 中的翻译文件仅由 lrelease 处理,而不是 lupdate

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

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

11. FORMS

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

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

12. GUID

指定在 .vcproj 文件中设置的 GUID。GUID 通常是随机确定的。但是,如果需要固定 GUID,可以使用此变量设置它。

此变量仅特定于 .vcproj 文件;否则将被忽略

13. HEADERS

定义项目的头文件列表。

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

例如:

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

另请参阅 SOURCES

14. ICON

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

15. IDLSOURCES

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

16. INCLUDEPATH

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

例如:

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

要指定包含空格的路径,请使用 空格 中描述的双引号方式引用该路径:

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

17. 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 条带功能将被关闭,调试信息将保留在二进制文件中
executable 在 Unix 上,这将设置可执行标志
no_build 在进行 make install 时,如果还没有项目的生成版本,则首先生成项目,然后安装项目。如果不希望出现这种行为,可以设置此配置值,以确保构建目标没有作为依赖项添加到安装目标
no_default_install 项目有一个顶级项目目标,在该目标中,当我们进行 make install 时,将安装所有内容。但是,如果我们有一个设置了此配置值的安装目标,则默认情况下不会安装它。然后必须显式地输入 make install_<file>

有关更多信息,请参见 Installing Files

此变量还用于指定将部署到嵌入式设备的其他文件

18. LEXIMPLS

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

19. LEXOBJECTS

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

20. LEXSOURCES

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

LEXSOURCES = lexer.l

21. 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

22. LIBS_PRIVATE

指定要私有链接到项目中的库的列表。这个变量的行为与 LIBS 相同,不同之处在于,为 Unix 构建的共享库项目不会在其链接接口中公开这些依赖项。

这样做的效果是,如果项目 C 依赖于库 B,而库 B 又私有依赖于库 A,但是 C 也想直接使用来自 A 的符号,它需要显式地链接到库 A。换句话说,私有链接的库不会在构建时被传递。

23. 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:

Project MESSAGE: http://doc.qt.io/qt-5/qtextdocument.html#pageCount

24. MAKEFILE

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

25. MAKEFILE_GENERATOR

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

26. MSVCPROJ_*

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

27. MOC_DIR

指定应该放置所有中间 moc 文件的目录。

例如:

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

28. OBJECTIVE_HEADERS

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

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

这类似于 HEADERS 变量,但是允许使用 Objective-C++ 编译器编译生成的 moc 文件。

另请参阅 OBJECTIVE_SOURCES

29. OBJECTIVE_SOURCES

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

这个变量现在已经废弃了,Objective-C/ C++ 文件(.m 和 .mm )可以添加到 SOURCES 变量中。

另请参阅 OBJECTIVE_HEADERS

30. OBJECTS

这个变量是由 SOURCES 变量自动填充的。每个源文件的扩展名都被 .o (Unix) 或. obj (Win32) 所代替。我们可以将对象添加到列表中

31. OBJECTS_DIR

指定应该放置所有中间对象的目录。

例如:

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

32. POST_TARGETDEPS

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

这个列表位于所有内建(和 $$PRE_TARGETDEPS )依赖项之后。

33. PRE_TARGETDEPS

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

此列表放在所有内置依赖项之前

34. PRECOMPILED_HEADER

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

35. PWD

指向包含正在解析的当前文件的目录的完整路径。在编写项目文件以支持影子构建时,引用源树中的文件可能很有用。

另请参阅 _PRO_FILE_PWD_

注意: 不要试图覆盖此变量的值。

36. OUT_PWD

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

注意: 不要试图覆盖此变量的值。

37. QM_FILES_RESOURCE_PREFIX

指定资源系统中的目录,在该目录中 CONFIG += embed_translations 将使 .qm 文件可用。

默认值是 :/i18n/

38. QM_FILES_INSTALL_PATH

指定 CONFIG += lrelease 生成的目标目录 .qm 文件将被安装到的位置。如果设置 CONFIG += embed_translations 则没有任何效果

39. QML_IMPORT_PATH

此变量仅供 Qt Creator 使用。有关详细信息,请参见 Qt Creator: 使用带有插件的QML模块

40. QMAKE

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

41. QMAKESPEC

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

注意: 不要试图覆盖此变量的值。

42. QMAKE_AR_CMD

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

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

43. 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 选项时创建库包。

有关创建库包的更多信息,请参见 平台相关事项

44. QMAKE_BUNDLE_EXTENSION

注意: 这个变量只在 macOS、iOS、tvOS 和 watchOS 上使用。

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

例如,下面的定义将产生一个扩展名为 .myframework 的框架:

QMAKE_BUNDLE_EXTENSION = .myframework

45. QMAKE_CC

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

46. QMAKE_CFLAGS

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

47. QMAKE_CFLAGS_DEBUG

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

48. QMAKE_CFLAGS_RELEASE

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

49. QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO

指定 CONFIG 中设置 force_debug_info 的 C 编译器版本标志。这个变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改

50. QMAKE_CFLAGS_SHLIB

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

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

51. QMAKE_CFLAGS_THREAD

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

52. QMAKE_CFLAGS_WARN_OFF

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

53. QMAKE_CFLAGS_WARN_ON

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

54. QMAKE_CLEAN

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

55. QMAKE_CXX

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

56. QMAKE_CXXFLAGS

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

57. QMAKE_CXXFLAGS_DEBUG

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

58. QMAKE_CXXFLAGS_RELEASE

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

59. QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO

指定 CONFIG 中设置 force_debug_info 的 C++ 编译器版本标志。这个变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改

60. QMAKE_CXXFLAGS_SHLIB

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

61. QMAKE_CXXFLAGS_THREAD

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

62. QMAKE_CXXFLAGS_WARN_OFF

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

63. QMAKE_CXXFLAGS_WARN_ON

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

64. QMAKE_DEVELOPMENT_TEAM

注意: 这个变量只在 macOS、iOS、tvOS 和 watchOS 上使用。

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

65. QMAKE_DISTCLEAN

指定要通过 make distclean 删除的文件列表。

66. QMAKE_EXTENSION_SHLIB

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

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

67. QMAKE_EXTENSION_STATICLIB

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

68. QMAKE_EXT_MOC

修改放置在包含的 moc 文件上的扩展名。另请参阅 File Extensions

69. QMAKE_EXT_UI

修改用于Qt Designer UI文件的扩展名。另请参阅 File Extensions

70. QMAKE_EXT_PRL

修改用于创建的 PRL 文件的扩展名。另请参阅 File ExtensionsLibrary Dependencies

71. QMAKE_EXT_LEX

修改对给定给 Lex 的文件使用的扩展名。另请参阅 File ExtensionsLEXSOURCES

72. QMAKE_EXT_YACC

修改对给定给 Yacc 的文件使用的扩展名。另请参阅 File ExtensionsYACCSOURCES

73. QMAKE_EXT_OBJ

修改用于生成的对象文件的扩展名。另请参阅 File Extensions

74. QMAKE_EXT_CPP

修改文件的后缀,这些后缀应该被解释为 C++ 源代码。另请参阅 File Extensions

75. QMAKE_EXT_H

修改文件的后缀,这些后缀应该被解释为 C 头文件。另请参阅 File Extensions

76. QMAKE_EXTRA_COMPILERS

指定附加编译器或预处理器的列表。另请参阅 Adding Compilers

77. QMAKE_EXTRA_TARGETS

指定其他 qmake 目标的列表。另请参阅 Adding Custom Targets

78. QMAKE_FAILED_REQUIREMENTS

包含失败需求的列表。这个变量的值是由 qmake 设置的,不能修改。另请参阅 requires()REQUIRES

79. QMAKE_FRAMEWORK_BUNDLE_NAME

注意: 这个变量只在 macOS、iOS、tvOS 和 watchOS 上使用。

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

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

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

80. QMAKE_FRAMEWORK_VERSION

注意: 这个变量只在 macOS、iOS、tvOS 和 watchOS 上使用。

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

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

有关创建框架的更多信息,请参见 Creating Frameworks

81. QMAKE_HOST

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

关键字 返回值
.arch 主机架构
.os 主机 OS
.cpu_count 可用 cpu 的数量
.name 主机名称
.version 主机 OS 版本号
.version_string 主机 OS 版本字符串
win32-g++:contains(QMAKE_HOST.arch, x86_64):{
    message("Host is 64bit")
    ...
}

82. QMAKE_INCDIR

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

83. QMAKE_INCDIR_EGL

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

84. QMAKE_INCDIR_OPENGL

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

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

85. QMAKE_INCDIR_OPENGL_ES2

这个变量指定在构建支持 OpenGL ES 2 的目标时要添加到 INCLUDEPATH 的 OpenGL 头文件的位置。

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

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

86. QMAKE_INCDIR_OPENVG

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

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

87. QMAKE_INCDIR_X11

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

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

88. 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的值(用句号(.)分隔)来确定。
${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 的值。

注意:当使用 Xcode 生成器时,上面的 ${var} 样式的占位符会被 Xcode 构建系统直接替换,qmake 不会处理这些占位符。@var@ 样式的占位符只适用于 qmake Makefile 生成器,而不适用于 Xcode 生成器。

如果为 iOS 构建,.plist文件包含 NSPhotoLibraryUsageDescription 键,那么 qmake 将在构建中包含一个额外的插件,用于添加照片访问支持(例如,QFile/QFileDialog)。关于这个键的更多信息,可以查看自苹果的 Info.plist文档。

注意::大多数时候,默认 Info.plist 已经足够应付开发需要了。

89. QMAKE_IOS_DEPLOYMENT_TARGET

注意: 这个变量只在 iOS 上使用。

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

有关更多信息,请参见 Expressing Supported iOS Versions

90. QMAKE_LFLAGS

指定传递给链接器的通用标志集。如果需要更改用于特定平台或项目类型的标志,请使用其中一个专用变量,而不是此变量。

91. QMAKE_LFLAGS_CONSOLE

注意: 这个变量只适用于 Windows 平台目标

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

92. QMAKE_LFLAGS_DEBUG

指定调试生成的链接器标志。这个变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

93. QMAKE_LFLAGS_PLUGIN

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

94. QMAKE_LFLAGS_RPATH

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

指定使用 QMAKE_RPATHDIR 中的值所需的链接器标志。

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

95. QMAKE_LFLAGS_REL_RPATH

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

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

96. QMAKE_REL_RPATH_BASE

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

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

97. QMAKE_LFLAGS_RPATHLINK

指定使用 QMAKE_RPATHLINKDIR 中的值所需的链接器标志。

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

98. QMAKE_LFLAGS_RELEASE

指定发布版本的链接器标志。这个变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

99. QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO

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

100. QMAKE_LFLAGS_APP

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

101. QMAKE_LFLAGS_SHLIB

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

102. QMAKE_LFLAGS_SONAME

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

103. QMAKE_LFLAGS_THREAD

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

104. QMAKE_LFLAGS_WINDOWS

注意: 这个变量只适用于 Windows 平台目标

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

105. QMAKE_LIBDIR

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

要在项目文件中指定额外的搜索路径,请像下面这样使用 LIBS :

LIBS += -L/path/to/libraries

106. QMAKE_LIBDIR_POST

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

107. QMAKE_LIBDIR_FLAGS

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

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

108. QMAKE_LIBDIR_EGL

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

109. QMAKE_LIBDIR_OPENGL

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

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

110. QMAKE_LIBDIR_OPENVG

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

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

111. QMAKE_LIBDIR_X11

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

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

112. QMAKE_LIBS

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

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

113. QMAKE_LIBS_PRIVATE

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

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

114. QMAKE_LIBS_EGL

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

其通常的值是 -lEGL

115. QMAKE_LIBS_OPENGL

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

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

116. QMAKE_LIBS_OPENGL_ES1, QMAKE_LIBS_OPENGL_ES2

这些变量指定了 OpenGL ES1 和 OpenGL ES2 的所有 OpenGL 库。这个变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

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

117. QMAKE_LIBS_OPENVG

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

一些 OpenVG 引擎是在 OpenGL 上实现的。这将在配置时检测到,QMAKE_LIBS_OPENGL 将隐式地添加到连接 OpenVG 库的 QMAKE_LIBS_OPENVG 中。

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

118. QMAKE_LIBS_THREAD

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

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

119. QMAKE_LIBS_X11

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

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

120. QMAKE_LIB_FLAG

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

121. QMAKE_LINK

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

122. QMAKE_LINK_SHLIB_CMD

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

123. QMAKE_LN_SHLIB

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

124. QMAKE_LRELEASE_FLAGS

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

125. QMAKE_OBJECTIVE_CFLAGS

指定用于生成项目的目标 C/C++ 编译器标记。除了 QMAKE_CFLAGSQMAKE_CXXFLAGS 之外,还使用了这些标志。

126. QMAKE_POST_LINK

指定将 TARGET 连接在一起后要执行的命令。该变量通常为空,因此不执行任何操作。

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

127. QMAKE_PRE_LINK

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

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

128. QMAKE_PROJECT_NAME

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

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

129. QMAKE_PROVISIONING_PROFILE

注意: 这个变量只在 macOS、iOS、tvOS 和 watchOS 上使用。

有效配置配置文件的 UUID。与 QMAKE_DEVELOPMENT_TEAM 一起使用,以指定配置配置文件。

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

130. QMAKE_MAC_SDK

在 macOS 上构建通用二进制文件时使用这个变量。

131. QMAKE_MACOSX_DEPLOYMENT_TARGET

注意: 这个变量只在 macOS 上使用。

指定应用程序支持的 macOS 的硬件最小版本。

更多信息,请参阅 macOS Version Dependencies

132. QMAKE_MAKEFILE

指定要创建的生成文件的名称。这个变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

133. QMAKE_QMAKE

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

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

134. QMAKE_RESOURCE_FLAGS

此变量用于自定义在使用它的每个构建规则中传递给 Resource Compiler 的选项列表。例如,下面的行确保 -threshold-compress 选项在每次调用 rcc 时使用特定的值:

QMAKE_RESOURCE_FLAGS += -threshold 0 -compress 9

135. QMAKE_RPATHDIR

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

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

当指定了相对路径时,qmake 将它们转换为动态链接器可以理解的相对于引用的可执行文件或库位置的形式。只有一些平台(目前是基于 Linux 和 Darwin-based 的平台)支持这一点,通过检查是否设置了 QMAKE_REL_RPATH_BASE 可以检测到。

136. QMAKE_RPATHLINKDIR

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

137. QMAKE_RUN_CC

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

138. QMAKE_RUN_CC_IMP

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

139. QMAKE_RUN_CXX

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

140. QMAKE_RUN_CXX_IMP

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

141. 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 文档。

142. QMAKE_TARGET

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

143. QMAKE_TARGET_COMPANY

仅 Windows 平台使用。指定公司为项目目标;这用于在适用的情况下将公司名称放入应用程序的属性中。只有在设置了 VERSIONRC_ICONS 变量而没有设置 RC_FILERES_FILE 变量时,才会使用这个函数。

144. QMAKE_TARGET_DESCRIPTION

仅 Windows 平台使用。指定项目目标的说明;它用于在适用的情况下将描述放入应用程序的属性中。只有在设置了 VERSIONRC_ICONS 变量而没有设置 RC_FILERES_FILE 变量时,才会使用这个函数。

145. QMAKE_TARGET_COPYRIGHT

仅 Windows 平台使用。指定项目目标的版权信息;它用于在适用的情况下将版权信息放入应用程序的属性中。只有在设置了 VERSIONRC_ICONS 变量而没有设置 RC_FILERES_FILE 变量时,才会使用这个函数。

146. QMAKE_TARGET_PRODUCT

仅 Windows 平台使用。为项目目标指定产品;它用于将产品放入应用程序的属性中。只有在设置了 VERSIONRC_ICONS 变量而没有设置 RC_FILERES_FILE 变量时,才会使用这个函数。

147. QMAKE_TVOS_DEPLOYMENT_TARGET

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

指定应用程序支持的 tvOS 的硬件最小版本。

有关更多信息,请参见 Expressing Supported iOS Versions

148. QMAKE_UIC_FLAGS

此变量用于在使用它的每个构建规则中定制传递给 User Interface Compiler 的选项列表。

149. QMAKE_WATCHOS_DEPLOYMENT_TARGET

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

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

有关更多信息,请参见 Expressing Supported iOS Versions

150. QML_IMPORT_MAJOR_VERSION

指定用于自动生成的 QML 类型注册的主版本。有关更多信息,请参见 Defining QML Types from C++

151. QML_IMPORT_MINOR_VERSION

当自动注册 C++ 中定义的 QML 类型时,使用这个次要版本注册模块的附加版本。通常,要注册的次要版本是从元对象推断出来的。

如果元对象没有改变,并且我们仍然想导入一个具有较新的副版本号的 QML 模块,那么我们可以使用这个变量。例如,MyModule 元对象是 1.1 的,但是我们希望导入的模块是 1.3 的。

152. QML_IMPORT_VERSION

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

153. QML_IMPORT_NAME

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

154. QML_FOREIGN_METATYPES

指定在生成 qmltypes 文件时要考虑的元类型的 JSON 文件。当外部库提供向 QML 公开的类型(直接或作为其他类型的基类型或属性)时使用此属性。Qt 类型将被自动考虑,不需要在这里添加。

155. QT

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

在 c++ 实现级别,使用 Qt 模块使其头文件可以被包含,并使其链接到二进制文件。

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

如果我们想在不使用 Qt GUI 模块的情况下构建一个项目,则需要使用 “-=” 操作符排除 GUI 值。下面的代码行将使我们能创建最小的 Qt 项目:

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

如果我们的项目是一个 Qt Designer 插件,那么使用值 uiplugin 来指定要构建的项目是一个库,但是要有对 Qt Designer 的特定插件支持。有关更多信息,请参见 Building and Installing the Plugin

156. QTPLUGIN

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

qmake 会自动添加所使用的 Qt 模块通常需要的插件(参见 QT)。默认设置被调优为最佳的开箱即用体验。有关可用插件的列表和覆盖自动链接的方法,请参阅 Static Plugins

当前,当链接共享/动态的 Qt 构建时,或者在链接库时,这个变量没有影响。它可以在以后用于部署动态插件。

157. QT_VERSION

包含 Qt 的当前版本。

158. QT_MAJOR_VERSION

包含 Qt 的当前主要版本。

159. QT_MINOR_VERSION

包含 Qt 的当前次要版本。

160. QT_PATCH_VERSION

包含 Qt 的当前补丁版本。

161. RC_FILE

仅 Windows 平台使用。指定目标的 Windows 资源文件(.rc)的名称。参阅 Adding Windows Resource Files

162. RC_CODEPAGE

仅 Windows 平台使用。指定应该在生成的 .rc 文件中指定的代码页。只有在设置了 VERSIONRC_ICONS 变量而没有设置 RC_FILERES_FILE 变量时,才会使用这个函数。

163. RC_DEFINES

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

RC_DEFINES += USE_MY_STUFF

164. RC_ICONS

仅 Windows 平台使用。指定应该包含在生成的 .rc 文件中的图标。只有当 RC_FILERES_FILE 变量未设置时使用。关于生成.rc文件的更多细节可以在 平台相关事项 中找到。

165. RC_LANG

仅 Windows 平台使用。指定应该在生成的.rc文件中指定的语言。只有在设置了 VERSIONRC_ICONS 变量而没有设置 RC_FILERES_FILE 变量时,才会使用。

166. RC_INCLUDEPATH

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

167. RCC_DIR

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

例如:

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

168. REQUIRES

指定作为条件计算的值列表。如果任何条件为假,qmake 在构建时跳过这个项目(及其子目录)。

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

169. RESOURCES

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

170. RES_FILE

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

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

171. SOURCES

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

例如:

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

也可参阅:HEADERS

172. 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

173. TARGET

指定目标文件的名称。默认情况下为项目文件去掉后缀的名称。

例如:

TEMPLATE = app
TARGET = myapp
SOURCES = main.cpp

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

174. TARGET_EXT

指定 TARGET 的扩展名。这个变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

175. TARGET_x

用主版本号指定 TARGET 的扩展名。这个变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

176. TARGET_x.y.z

使用版本号指定 TARGET 的扩展名。这个变量的值通常由 qmake 或 qmake.conf 处理,很少需要修改。

177. TEMPLATE

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

|选项|描述|
|app|创建用于构建应用程序的 Makefile(缺省值)。有关更多信息,请参见Building an Application。|
|lib|创建用于构建库的 Makefile。有关更多信息,请参见Building a Library。|
|subdirs|创建用于在子目录中构建目标的 Makefile。子目录是使用 SUBDIRS 变量指定的。|
|aux|创建一个不构建任何东西的 Makefile。如果不需要调用编译器来创建目标,请使用此选项;例如,因为我们的项目是用解释语言编写的。
注意:此模板类型仅适用于基于 makefile 的生成器。特别是,它不能与 vcxproj 和 Xcode 生成器一起工作。|
|vcapp|仅 Windows 使用。为 Visual Studio 创建一个应用程序项目。有关更多信息,请参见Creating Visual Studio Project Files。|
|vclib|仅 Windows 使用。为 Visual Studio 创建一个库项目。|

例如:

TEMPLATE = lib
SOURCES = main.cpp
TARGET = mylib

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

178. TRANSLATIONS

指定翻译(.ts)文件列表,其中包含将用户界面文本翻译成非本地语言的内容。

TRANSLATIONS 中的翻译文件将由 lreleaselupdate 工具处理。如果只希望 lrelease 处理文件,请使用 EXTRA_TRANSLATIONS

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

有关 Qt 的国际化 (i18n) 和本地化 (l10n) 的更多信息,请参见 Qt Linguist Manual

179. UI_DIR

指定应该放置 uic 的所有中间文件的目录。

例如:

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

180. VERSION

如果指定了 app template,则指定应用程序的版本号;如果指定了 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

181. VERSION_PE_HEADER

仅 Windows 平台使用。指定版本号,Windows 链接器通过 /VERSION 选项将其放入 .exe 或 .dll 文件的头文件中。只能指定主版本和次版本。如果没有设置 VERSION_PE_HEADER,则从 VERSION (如果设置了)退回到主版本和次版本。

VERSION_PE_HEADER = 1.2

182. VER_MAJ

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

183. VER_MIN

如果指定了 lib template,则指定库的副版本号。

184. VER_PAT

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

185. VPATH

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

也可以参阅 DEPENDPATH

186. WINDOWS_TARGET_PLATFORM_VERSION

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

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

在 Universal Windows Platform (UWP) 上,默认值是环境变量 UCRTVERSION 的值。

187. WINDOWS_TARGET_PLATFORM_MIN_VERSION

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

默认为 WINDOWS_TARGET_PLATFORM_VERSION。

188. WINRT_MANIFEST

指定要传递到 UWP 上的应用程序清单的参数。允许的值是:

成员 描述
architecture 目标体系结构。默认为 VCPROJ_ARCH 。
background Tile 背景颜色。默认为绿色。
capabilities 指定要添加到功能列表中的功能。
capabilities_device 指定要添加到功能列表中的设备功能(位置、网络摄像头等)。
CONFIG 指定处理输入清单文件的附加标志。目前,verbatim 是唯一可用的选项。
default_language 应用程序的默认语言代码。默认为“en”。
dependencies 指定包所需的依赖关系。
description 包的描述。默认为 Default package description
foreground 平铺前景(文本)颜色。默认为 light。
iconic_tile_icon 图像文件的 iconic tile 模板图标。默认由 mkspec 提供。
iconic_tile_small 图像文件为小 iconic tile 模板图标。默认由 mkspec 提供。
identity 应用程序的唯一 ID。默认情况下重用现有生成的清单的 UUID,如果没有,则生成一个新的 UUID。
logo_30x30 Logo 图像文件大小为 30 x 30 像素。
logo_41x41 Logo 图像文件大小为 41 x 41 像素。此参数已废弃。
logo_70x70 Logo 图像文件大小为 70 x 70 像素。
logo_71x71 Logo 图像文件大小为 71 x 71 像素。此参数已废弃。
logo_150x150 Logo 图像文件大小为 150 x 150 像素。所有 Windows Store 应用程序平台都支持这一功能。
logo_310x150 Logo 图像文件大小为 310 x 150 像素。所有 Windows Store 应用程序平台都支持这一功能。
logo_310x310 Logo 图像文件大小为 310 x 310 像素。所有 Windows Store 应用程序平台都支持这一功能。
logo_620x300 启动画面的图像文件大小为 620 x 300 像素。
logo_480x800 启动画面的图像文件大小为 620 x 300 像素。此参数已废弃。
logo_large 大型 logo 图像文件。这个必须是 150 x 150 像素。支持所有 Windows 商店应用平台。默认由 mkspec 提供。
logo_medium 中等 logo 图像文件。这个必须是 70 x 70 像素。默认由 mkspec 提供。
logo_small 小型 logo 图像文件。这个必须是 30 x 30 像素。默认由 mkspec 提供。
logo_splash 启动屏幕图像文件。图像的像素大小必须为 620 x 300。默认由 mkspec 提供。
logo_store 为 Windows 商店的标志图像文件。默认由 mkspec 提供。
logo_wide 宽 logo 图像文件。这个必须是 310 x 150 像素。支持所有 Windows 商店应用平台。默认由 mkspec 提供。
name 显示给用户的包的名称。默认为 TARGET 的值。
phone_product_id 该产品的 GUID。此参数已过时。
phone_publisher_id 发布者的GUID。此参数已过时。
publisher 显示发布服务器的名称。默认为 Default publisher display name
publisher_id 发布者的专有名称(默认为: CN=MyCN )。
target 目标的名称(.exe)。默认为 TARGET 的值。
version 包的版本号。默认为1.0.0.0。
minVersion 运行包所需的最低 Windows 版本。默认为 WINDOWS_TARGET_PLATFORM_VERSION 。
maxVersionTested 软件包测试的最大 Windows 版本。默认为 WINDOWS_TARGET_PLATFORM_MIN_VERSION 。

我们可以使用这些值的任何组合。

例如:

WINRT_MANIFEST.publisher = MyCompany
WINRT_MANIFEST.logo_store = someImage.png
WINRT_MANIFEST.capabilities += internetClient
WINRT_MANIFEST.capabilities_device += location

另外,可以使用 WINRT_MANIFEST 指定输入清单文件。

例如:

WINRT_MANIFEST = someManifest.xml.in

如果不处理输入清单文件,而只是将其复制到目标目录,则需要设置逐字配置。

WINRT_MANIFEST = someManifest.xml.in
WINRT_MANIFEST.CONFIG += verbatim

189. YACCSOURCES

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

例如:

YACCSOURCES = moc.y

190. PRO_FILE

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

例如,下面一行将项目文件的位置打印到控制台:

message($$_PRO_FILE_)

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

191. PRO_FILE_PWD

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

例如,下面一行将把包含项目文件的目录的位置打印到控制台:

message($$_PRO_FILE_PWD_)

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

以上:由 本人 翻译自 qmake variable reference,由于英文水平有限,所以有不正确的地方欢迎留言指正,以方便更多的朋友学习使用。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335