目录
前言
*.pro 文件是创建 Qt 项目时生成的工程文件,可使用 qmake 命令后在 Linux 环境下可以生成 Makefile 文件。
qmake 命令是在 Linux 环境下的编译命令,主要功能是根据 *.pro 文件生成对应的 Makefile 文件,执行翻译的功能。
Makefile 文件其实是一个脚本文件,用于执行将散在各个文件夹的程序文件编译成期望的项目。
因此,如果需要完成项目创建或者进阶定制我们程序的功能,我们都需要从基础的 *.pro 文件入手,研究其然及所以然。本文主要讲解 *.pro 文件的关键字和对应的功能,下面就开始学习吧。
配置项
1、# 注释
# 字符用于标记整行文字,根据开发需求形成注释。例如 1-5 行的代码。
2、TEMPLATE 生成Makefile的预设模板
TEMPLATE 用于设置项目的模板,决定项目构建时建立的是应用程序 (application) 、库 (library) 还是插件 (plugin),主要分为 5 种,他们分别为 app、lib、subdirs、vcapp、vclib、aux。
- app:创建用于构建应用程序的 Makefile。TEMPLATE 默认类型。
- lib:创建用于构建库的 Makefile。
- subdirs:创建用于构建子目录的 Makefile。子目录可由 SUBDIRS 变量指定。
- vcapp:仅在 Windows 下生效,创建适用于 Visual Studio 的应用程序。
- vclib:仅在 Windows 下生效,创建适用于 Visual Studio 的库。
- aux:创建一个 Makefile 但不进行构建。
3、TARGET 指定生成项目名称
TARGET 用于配置默认生成的项目名称。用法如下:
TARGET = tempapp
4、 CONFIG 指定配置和编译器选项
以下是从 Qt 官方文档翻译的可供配置的选项及描述。
选项 | 描述 |
---|---|
release | 配置项目为发布模式。如果同时指定了 debug,则最后的配置项生效。 |
debug | 配置项目为调试模式。 |
debug_and_release | 配置项目为调试和发布模式。同时创建调试和发布项目。 |
debug_and_release_target | 此项为默认设置。如果配置了 debug_and_release,调试和发布项目将在属于自己的文件目录生成。 |
build_all | 如果配置了 debug_and_release,将默认生成调试和发布项目。 |
autogen_precompile_source | 自动生成包含在 .pro 文件中指定的预编译头文件和 |
ordered | 当模板指定为 subdirs 时,此配置项会根据 .pro 文件的顺序进行编译处理。 注意:不鼓励使用此项。应按照 SUBDIRS 说明文档中的变量指定依赖项。 |
precompile_header | 增加预编译头文件支持。 |
precompile_header_c (MSVC only) | 增加对 C 文件的预编译头文件支持。 |
warn_on | 编译器尽可能多的输出警告信息。如果同时配置了 warn_off,则最后的配置项生效。 |
warn_off | 编译器尽可能少的输出警告信息。 |
exceptions | 启用异常支持配置。默认设置。 |
exceptions_off | 停用异常支持配置。 |
ltcg | 启用链接时进行代码生成配置。默认关闭。 |
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 | 根据 QM_FILES_RESOURCE_PREFIX 设置,将 lrelease 生成的翻译文件嵌入可执行文件中。此外还需要配置 lrelease。默认不配置。 |
create_libtool | 在当前构建的库创建一个 libtool 类型的 .la 文件。 |
create_pc | 在当前构建的库创建一个 pkg-config 类型的 .pc 文件。 |
no_batch | NMake only:关闭 NMake 批处理规则或推理规则的生成。 |
skip_target_version_ext | 在 Windows 环境中,禁止自动将版本号附加到 DLL 文件名中。 |
suppress_vcproj_warnings | 禁止 VS 项目生成器的警告。 |
windeployqt | 链接后自动调用windeployqt,并将输出添加为部署项。 |
dont_recurse | 禁止 qmake 在子项目递归执行。 |
no_include_pwd | 当前目录不添加至 INCLUDEPATHS。 |
compile_included_sources | 默认情况下,qmake 不编译包含在其他源文件的源文件。默认不配置此项。 |
5、UIC_DIR
用于指定执行 uic 命令后,将 .ui 转化为 ui_*.h 文件的生成目录。
6、RCC_DIR
用于指定执行 rcc 命令后,将 .qrc 文件转化为 qrc_*.h 文件的生成目录。
7、MOC_DIR
用于指定执行 moc 命令后,将含有 Q_OBJECT 的头文件转换为标准 .h 文件的生成目录。
8、OBJECTS_DIR
用于指定目标文件 obj 的生成目录。
9、DESTDIR
用于指定可执行文件或库文件的生成路径。
10、DEPENDPATH
用于指定工程的依赖路径。
11、INCLUDEPATH
用于指定工程所需的头文件。
12、CODECFORSRC
用于指定源文件的编码格式。
13、FORMS
用于指定项目所需的 ui 文件。
14、HEADERS
用于指定项目所需的 .h 文件。
15、SOURCES
用于指定项目所需的 .cpp 文件。
16、RESOURCES
用于指定项目所包含的 .qrc 资源文件。
17、LIBS
用于指定引入的 lib 文件的路径。
18、DEFINES
用于指定项目的编译选项