笔记:Qt开发之工程的多模块设计(pri)

目标:对于功能模块较多的Qt项目,使用pri文件管理模块文件,降低工程复杂度,提高软件模块的封装性和重用性。

一、知识储备

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/subPro1
include($$PWD/subPro1/subPro1.pri)

4,修改subPro1.pri文件,加入源文件路径

选择subPro1图标,右键->添加现有文件,选择需要加入到subPro1.pri文件的源文件

5,继续操作subPro2、subPro3模块

每个模块的相关文件都放入各自的模块结构中,整个工程结构更清晰,便于维护。

示例下载

https://download.csdn.net/download/VistaTech/89532802


参考资料

Qt 项目文件Pri详解_qt pri文件-CSDN博客

Qt Pri多模块 - 三淼 - 博客园 (cnblogs.com)

【Qt】使用pri管理项目中的子模块-Qt-Qt未来工程师 (qtfuture.cn)

Qt中pro、pri文件的语法介绍_qtprpyurqoyqtprpyurqoy-CSDN博客

Qt开发之路--模块化设计.pri文件_qt_宁静致远2021-开放原子开发者工作坊 (csdn.net)

相关推荐

  1. Qt | .pro开发经验笔记

    2024-07-11 20:02:03       36 阅读
  2. SpringBoot 模块开发 笔记

    2024-07-11 20:02:03       47 阅读
  3. QT设计模式工厂模式

    2024-07-11 20:02:03       23 阅读
  4. (三)js前端开发设计模式工厂模式

    2024-07-11 20:02:03       18 阅读
  5. SpringBoot模块应用模块设计

    2024-07-11 20:02:03       35 阅读
  6. QT设计模式:抽象工厂模式

    2024-07-11 20:02:03       34 阅读
  7. 设计模式艺术》笔记 - 工厂方法模式

    2024-07-11 20:02:03       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 20:02:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 20:02:03       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 20:02:03       58 阅读
  4. Python语言-面向对象

    2024-07-11 20:02:03       69 阅读

热门阅读

  1. padStart方法用来格式化数据

    2024-07-11 20:02:03       21 阅读
  2. 视觉图像面积计算

    2024-07-11 20:02:03       15 阅读
  3. python函数设计(1)

    2024-07-11 20:02:03       22 阅读
  4. 遥感影像图像识别

    2024-07-11 20:02:03       18 阅读
  5. C++:set和map

    2024-07-11 20:02:03       23 阅读
  6. YOLO v8进行目标检测的遇到的bug小结

    2024-07-11 20:02:03       20 阅读
  7. 数据建设实践之数据规范

    2024-07-11 20:02:03       21 阅读
  8. Google订阅补坑

    2024-07-11 20:02:03       24 阅读