在Qt项目的.pro文件中,有一些特定的变量和命令,用于配置和控制项目的构建过程。以下是一些常用的变量和命令,以及它们的使用方式:
1、TARGET: 定义生成的可执行文件的名称。
TARGET = MyApplication
2、TEMPLATE: 指定项目的类型,可以是"app"(应用程序)或"lib"(库)。
TEMPLATE = app
3、CONFIG: 配置项目的一些特定选项,如Debug和Release模式等。
CONFIG += c++11 CONFIG += qt debug warn_on release
CONFIG 是用于配置 Qt 项目的关键变量之一。在你提供的代码片段中,CONFIG += qt debug warn_on release 将在 Qt 项目中进行一些常见的配置。以下是各个部分的含义:
- qt:启用 Qt 的相关功能和模块。这会告诉 QMake 使用 Qt 框架的相关库和模块。
- debug 和 release:配置 Debug 模式和 Release 模式的构建选项。在这里,debug 表示启用 Debug 模式,而 release 表示启用 Release 模式。这将影响一些编译器和链接器选项,例如是否包含调试信息、优化等。
- warn_on:启用编译器的警告信息。这告诉编译器在编译过程中生成尽可能多的警告信息,帮助你发现潜在的问题。
总的来说,这一行配置告诉 QMake 在构建项目时使用 Qt 框架,启用 Debug 和 Release 模式,并在编译时生成警告信息。这是一个通常的配置,确保项目能够在不同的模式下构建,并且开发者能够及时发现潜在的问题。
4、SOURCES: 定义项目的源文件列表。
SOURCES += main.cpp \ widget.cpp
5、HEADERS: 定义项目的头文件列表。
HEADERS += widget.h
6、FORMS: 指定项目中的Qt Designer表单文件(.ui文件)。
FORMS += mainwindow.ui \ dialog.ui
7、RESOURCES: 指定项目中的资源文件(如图标、样式表等)。
RESOURCES += myresources.qrc
8、INCLUDEPATH: 指定头文件的搜索路径。
INCLUDEPATH += /path/to/include
9、LIBS: 指定链接的库文件。
LIBS += -L/path/to/lib -lmylibrary
10、DESTDIR: 指定构建生成的目标文件的输出目录。
DESTDIR = $$PWD/build
11、OBJECTS_DIR:用于指定对象文件输出目录的变量。对象文件是编译源代码(.cpp文件)生成的中间文件,它们包含了编译后的二进制代码,但还没有链接为最终的可执行文件或库。
BJECTS_DIR = $$PWD/debug/obj
12、MOC_DIR:用于指定元对象编译器(Meta-Object Compiler,MOC)生成的中间文件(通常是 .moc 文件)的输出目录。MOC 是用于处理 Qt 中的元对象系统的工具,它为支持信号与槽、动态属性等特性而生成必要的C++代码。
MOC_DIR = $$PWD/debug/moc
13、RCC_DIR:用于指定资源编译器(Resource Compiler,RCC)生成的中间文件的输出目录。RCC 用于将 Qt 项目中的资源文件(通常是.qrc文件)编译为 C++ 代码,使得这些资源可以在应用程序中被直接使用。
RCC_DIR = $$PWD/debug/rcc
14、CONFIG(debug, debug|release) 和 CONFIG(release, debug|release): 分别用于配置Debug和Release模式下的选项。
#Debug 模式配置 CONFIG(debug, debug|release) { TARGET = MyApplication_debug DESTDIR = $$PWD/debug OBJECTS_DIR = $$PWD/debug/obj MOC_DIR = $$PWD/debug/moc RCC_DIR = $$PWD/debug/rcc } #release 模式配置 CONFIG(release, debug|release) { TARGET = MyApplication_release DESTDIR = $$PWD/release OBJECTS_DIR = $$PWD/release/obj MOC_DIR = $$PWD/release/moc RCC_DIR = $$PWD/release/rcc }
标签:Qt,CONFIG,pro,release,PWD,debug,写法,DIR From: https://www.cnblogs.com/TechNomad/p/17852734.html