Qt之pro文件写法的详细介绍

发布时间 2023-11-23 23:03:29作者: TechNomad

在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
}