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 | 为 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 |
当我们使用 debug_and_release 选项(这是 Windows 下的默认选项)时,项目将被处理三次:一次生成“meta”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 选项时,组合构建是默认的。否则,设置 (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
删除的,生成文件(例如,通过 moc 和 uic 生成的文件)和对象文件的列表。
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 Extensions、Library Dependencies
71. QMAKE_EXT_LEX
修改对给定给 Lex 的文件使用的扩展名。另请参阅 File Extensions、LEXSOURCES
72. QMAKE_EXT_YACC
修改对给定给 Yacc 的文件使用的扩展名。另请参阅 File Extensions、YACCSOURCES
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_CFLAGS 和 QMAKE_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 平台使用。指定公司为项目目标;这用于在适用的情况下将公司名称放入应用程序的属性中。只有在设置了 VERSION 或 RC_ICONS 变量而没有设置 RC_FILE 和 RES_FILE 变量时,才会使用这个函数。
144. QMAKE_TARGET_DESCRIPTION
仅 Windows 平台使用。指定项目目标的说明;它用于在适用的情况下将描述放入应用程序的属性中。只有在设置了 VERSION 或 RC_ICONS 变量而没有设置 RC_FILE 和 RES_FILE 变量时,才会使用这个函数。
145. QMAKE_TARGET_COPYRIGHT
仅 Windows 平台使用。指定项目目标的版权信息;它用于在适用的情况下将版权信息放入应用程序的属性中。只有在设置了 VERSION 或 RC_ICONS 变量而没有设置 RC_FILE 和 RES_FILE 变量时,才会使用这个函数。
146. QMAKE_TARGET_PRODUCT
仅 Windows 平台使用。为项目目标指定产品;它用于将产品放入应用程序的属性中。只有在设置了 VERSION 或 RC_ICONS 变量而没有设置 RC_FILE 和 RES_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_VERSION 和 QML_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 包含 core
和 gui
,确保无需进一步配置即可构建标准 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 文件中指定的代码页。只有在设置了 VERSION 或 RC_ICONS 变量而没有设置 RC_FILE 和 RES_FILE 变量时,才会使用这个函数。
163. RC_DEFINES
仅 Windows 平台使用。qmake 将这个变量的值作为 RC 预处理器宏(/d 选项)添加。如果未设置此变量,则使用 DEFINES 变量。
RC_DEFINES += USE_MY_STUFF
164. RC_ICONS
仅 Windows 平台使用。指定应该包含在生成的 .rc 文件中的图标。只有当 RC_FILE 和 RES_FILE 变量未设置时使用。关于生成.rc文件的更多细节可以在 平台相关事项 中找到。
165. RC_LANG
仅 Windows 平台使用。指定应该在生成的.rc文件中指定的语言。只有在设置了 VERSION 或 RC_ICONS 变量而没有设置 RC_FILE 和 RES_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 中的翻译文件将由 lrelease 和 lupdate 工具处理。如果只希望 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_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
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,由于英文水平有限,所以有不正确的地方欢迎留言指正,以方便更多的朋友学习使用。