Qt使用.pri模块化工程

引言

 当你打算用Qt新开发一个GUI程序时,打开IDE创建一个GUI工程,会看到下面的工程结构。
Qt使用.pri模块化工程_第1张图片
这里面的文件有各自的分层,.h存在于Headers,.cpp存在于Sources,.ui存在于Forms,.pro则管理着整个工程,结构简单清晰。
 此时你若要往工程中添加新的文件,也非常简单,右键工程,就会出现添加的选择项,你只需要按照提示一步步往下走,就可以将所需文件加入工程。
Qt使用.pri模块化工程_第2张图片
 但当你的工程文件变多时,你的工程逻辑结构会变得相对复杂,这时点开你的工程节点会发现节点下都是这样长长的一串,什么模块的文件都挤在一个节点下,很臃肿。
Qt使用.pri模块化工程_第3张图片
 而管理着工程结构的就是平时不怎么需要被关注的.pro文件,当你项目逐渐变大,你就不得不需要去关注它,了解它,改变它。

改造

 这边也不介绍什么复杂的技巧。简单地谈一谈使用.pri来模块化工程。

使用.pri模块化工程

 .pri(.pro,project include)可以看成是.pro文件的子集,里面的内容大致和.pro是一样的。
 拿下面工程举例,我要将其中的QCustomPlot模块提出来,
 模块化前,.pro文件的HEADERS变量下是这样的,
Qt使用.pri模块化工程_第4张图片
 工程结构图是这样的,
Qt使用.pri模块化工程_第5张图片
 实际磁盘文件夹下,
Qt使用.pri模块化工程_第6张图片

 改造也很简单,
 在工程目录下建一个文件夹,命名为你的模块名,然后将qcustomplot模块相关的文件移进去,再新建一个qcustomplot.pri文件。
Qt使用.pri模块化工程_第7张图片
 qcustomplot.pri中将相关文件加入,可以通过IDE操作右键添加移入,也可以在.pri中编辑下图代码移入文件。
Qt使用.pri模块化工程_第8张图片
 接下来,把工程.pro文件中,原有的qcustomplot相关代码去掉(因为你工程目录下原路径的qcustomplot此时已经移除,所以是废代码了),然后将下面代码加入.pro中,

INCLUDEPATH += $$PWD/qcustomplot	# 工程编译时,会去INCLUDEPATH列表下的目录搜索文件
include     ($$PWD/qcustomplot/qcustomplot.pri)	# include()包含的文件会显示在工程结构图中

 加载完后,再来看工程结构图,
Qt使用.pri模块化工程_第9张图片
此时,qcustomplot模块已经独立出来了,而且工程物理结构和逻辑结构是对应的。每个模块的相关文件都放入各自的模块结构中。整个工程结构清晰了很多。

结尾

 写好一个.pro文件非常有助于你去梳理项目的结构组成,也能使得接手项目的人能更快地熟悉项目框架,一个良好的框架,也往往对开发维护有着事半功倍的效果。

你可能感兴趣的:(Qt)