一、一些概念
Qt的.pro文件是qmake构建系统使用的项目配置文件(类似脚本),用于描述项目的源文件、头文件、依赖库及编译选项。
二、基础语法
1.变量赋值:
= :普通赋值(覆盖原有值)
+= :追加值(推荐用于添加文件)
-= :移除值
*= :若不存在则追加
2.注释:以#或//开头
3.作用域:使用 { } 或换行缩进
三、常用核心变量
指那些直接决定项目构建方式、文件组成和运行环境的变量:模块与依赖 (最基础)、文件列表 (项目骨架) 、路径与输出 (控制生成位置)、编译与链接 (底层控制)、条件与平台 (逻辑控制)。
1.QT:指定使用的 Qt 模块
例如
QT += core gui widgets network
2.SOURCES:C++ 源文件列表
例如
SOURCES += main.cpp mainwindow.cpp
3.HEADERS:头文件列表
例如
HEADERS += mainwindow.h
4.FORMS:Qt Designer 界面文件
例如
FORMS += mainwindow.ui
5.RESOURCES:Qt 资源文件
例如
RESOURCES += app.qrc
6.DESTDIR:输出目录
DESTDIR = ../bin
7.TARGET:生成的可执行文件名
例如
TARGET = MyApp
8.INCLUDEPATH:库头文件搜索路径
例如
INCLUDEPATH += $$PWD/include
9.LIBS:链接的库文件
例如
LIBS += -L/usr/local/lib -lmylib
10.CODECFORSRC:告诉qmake及其调用的辅助工具(moc、uic),
当前项目的 C/C++ 源码文件、UI 文件等使用的字符编码格式(如 GBK、UTF-8)
11.DEFINES:预处理器宏定义,定义编译选项
例如
DEFINES += xxx_xxx,在.h文件中可以使用:#ifdefine xxx_xxx
四、常用函数
1.$$PWD:当前 .pro 文件所在的目录路径
2.$$files(pattern):获取匹配模式的文件列表,如 SOURCES += $$files(*.cpp)
3.contains(variable, value):检查变量是否包含指定值
4.message("变量名 = " $$变量名):查询变量的值
#项目名称
TARGET = SimpleUI
引入核心模块和窗口组件模块
QT += core gui widgets
源文件列表
SOURCES += main.cpp
指定C++11及以上标准
CONFIG += c++11
1. 移除 Debug 模式,强制仅保留 Release 模式
CONFIG -= debug
CONFIG += release
2. 禁用 qmake 同时生成 Debug/Release 两个 Makefile(针对部分 Qt 版本)
CONFIG -= debug_and_release
CONFIG -= debug_and_release_target
3. 输出相应的变量值
message("变量名 = $$PWD")
message($$files(*.cpp))

五、.pro文件结构
一个规范的 .pro 文件通常遵循模块化的结构,可以将其划分为6个标准区域。
1.项目基础配置区 (Basic Configuration)
这是文件的开头,用于定义项目的名称、版本和使用的 Qt 模块。
QT:指定依赖的 Qt 模块
TARGET:生成的可执行文件或库的名字
VERSION:项目版本号(可选)
2.源码与资源文件区 (Source & Resource Files)
列出项目中所有的代码文件、头文件、UI 设计文件和资源文件。
SOURCES:C++ 源文件 (.cpp)
HEADERS:头文件 (.h)
FORMS:UI 设计文件 (.ui)
RESOURCES:资源文件 (.qrc)
DISTFILES:其他需要分发的非代码文件(如 README)
3.编译模式与标准区 (Build Configuration)
设置编译模式(Debug/Release)、C++ 标准版本以及编译器警告级别。
CONFIG:核心配置开关
DEFINES:预处理器宏定义
4.路径与输出控制区 (Paths & Output)
控制文件生成的位置,保持源码目录整洁。
DESTDIR:最终生成的 exe/dll 存放目录
OBJECTS_DIR:中间目标文件 (.o/.obj) 存放目录
MOC_DIR / UI_DIR:moc/uic 生成文件的存放目录
5.外部依赖区 (External Dependencies)
当项目依赖第三方库(如 OpenCV, Boost, MySQL等)时配置。
INCLUDEPATH:头文件搜索路径
LIBS:链接的库文件
6.平台差异化配置区 (Platform Specific)
使用作用域 (Scopes) 为不同操作系统编写特定的规则。