一、知识储备
1.1 pro与pri文件
对于模块化编程,Qt提供了pro和pri,pro管理项目,pri管理模块。
.pro 文件是Qt项目的主配置文件,用于描述整个项目的基本信息和编译配置。
.pri 文件是包含在 .pro 文件中的辅助文件,用于组织和管理项目中的共享代码、配置选项和编译规则。
使用pri将项目划分成子模块后,各个模块的相关内容,移动到各自的pri文件,实现解耦,便于管理。
.pro 文件(项目文件)
作用: .pro 文件是Qt项目的主项目文件,用于描述项目的基本信息、依赖关系、编译配置等。
内容: 在 .pro 文件中,可设置项目的名称、版本号、编译选项、包含的源文件、依赖的库文件等信息。
示例: 一个简单的 .pro 文件可能包含以下内容:
-
# 指定生成的应用程序名
-
TARGET
= MyProject
-
# 生成应用程序,即可执行文件
-
TEMPLATE
= app
-
# 生成库文件
-
TEMPLATE
= lib
-
# 版本号
-
VERSION
=
1.0
-
# 源文件
-
SOURCES
+
= main.cpp \
-
widget.cpp
-
# 头文件
-
HEADERS
+
= widget.h
-
# 链接的库
-
LIBS
+
= -lmylibrary
-
# 包含.pri 文件
-
include(
file.pri)
-
# 程序编译时依赖的相关路径
-
DEPENDPATH
+
= . forms include qrc
sources
-
# 头文件包含路径
-
INCLUDEPATH
+
= .
-
# 工程中包含的头文件
-
HEADERS
+
= include
/painter.h
-
# 工程中包含的.ui设计文件
-
FORMS
+
= forms
/painter.ui
-
# 工程中包含的源文件
-
SOURCES
+
=
sources
/main.cpp
sources
/painter.cpp
-
# 工程中包含的资源文件
-
RESOURCES
+
= qrc
/painter.qrc
.pri 文件(包含文件)
作用: .pri 文件用于包含在 .pro 文件中,可组织和管理项目中的共享代码、配置选项和编译规则。
内容: 通常,.pri 文件包含一组变量定义、函数定义、条件语句等,用于封装特定的功能或配置选项。
示例: 一个简单的 .pri 文件可能包含以下内容:
-
# 定义编译选项
-
DEFINES
+
=
USE_FEATURE_X
-
# 包含其他的 .pri 文件
-
include(anotherfile.pri)
-
# 添加源文件
-
SOURCES
+
= additional.cpp
-
# 添加头文件
-
HEADERS
+
= additional.h
使用: 在 .pro 文件中,通过 include 指令可以引入 .pri 文件,从而将其内容合并到项目中,使得项目的管理更加灵活和模块化。
pro文件的配置项
-
#:注释
-
CONFIG:项目配置项
-
DEFINES:添加变量,作为预处理宏
-
DEPENDPATH:依赖关系
-
DESTDIR:指定目标文件的位置
-
FORMS:指定UI文件
-
HEADERS:指定头文件
-
INCLUDEPATH:包含目录
-
LIBS:指定链接库
-
MOC_DIR:指定来自moc所有中间文件放置的目录
-
OBJECTS_DIR:指定所有中间文件.o(.obj)放置的目录
-
QT:指定项目中使用Qt的模块
-
RCC_DIR:指定Qt资源编译器输出文件的目录(.qrc文件转换成qrc_
*.h文件的存放目录)
-
RESOURCES:指定资源文件 (qrc)
-
RC_ICONS:仅适用于Windows,指定的图标应该包含在一个生成的.rc文件里
-
SOURCE:指定所有源文件
-
TARGET:指定目标文件名称
-
TEMPLATE:模板变量告诉qmake为这个应用程序生成哪种makefile
-
TRANSLATIONS:指定翻译文件
pri的配置项
.pri(.pro,project include)可以看成是.pro文件的子集,里面的内容大致和.pro是一样的。
二、示例
开发工具:Qt Creator
假设工程为单项目多模块,有3个功能模块:subPro1、subPro2、subPro3
不同功能模块放到不同源文件,所有配置信息集中到pro文件,会导致pro文件过于复杂,难以维护
使用pri文件管理源文件,减轻pro文件负担,降低工程复杂度
1,将主界面文件放到单独文件夹,删除pro文件中的文件包含模块文件的配置信息
2,新建子文件夹subPro1,新建子文件subPro1.txt,修改文件后缀为subPro1.pri
3,在pro文件中添加pri文件
-
INCLUDEPATH
+
= $$PWD
/subPro
1
-
include($$PWD
/subPro
1
/subPro
1.pri)
4,修改subPro1.pri文件,加入源文件路径
选择subPro1图标,右键->添加现有文件,选择需要加入到subPro1.pri文件的源文件
5,继续操作subPro2、subPro3模块
每个模块的相关文件都放入各自的模块结构中,整个工程结构更清晰,便于维护。
示例下载
https://download.csdn.net/download/VistaTech/89532802
参考资料
Qt Pri多模块 - 三淼 - 博客园 (cnblogs.com)
【Qt】使用pri管理项目中的子模块-Qt-Qt未来工程师 (qtfuture.cn)
Qt中pro、pri文件的语法介绍_qtprpyurqoyqtprpyurqoy-CSDN博客
Qt开发之路--模块化设计.pri文件_qt_宁静致远2021-开放原子开发者工作坊 (csdn.net)