如何为Qt开发环境创建/添加一个新模块【01】
注:
(1)本文实验环境为Windows平台,Linux或者其他平台分析方法和思路类似。
(2)PC操作系统版本:Windows 10
(3)Qt 版本:5.15.2
一、分析Qt官方模块和工具
Qt框架由许多模块组成,这些模块在开发过程中,由QT变量导入。那么QT变量导入的过程是怎样进行的呢?本节将分析这个问题,以便后续进行Qt模块的添加。
下图是Qt版本的目录结构,这里以MinGW32为例:
(1)bin目录包含一些二进制和库文件等。
(2)include目录包含头文件。
(3)lib 包含在编译构建过程中需要使用到的库。
(4)mkspecs目录包含许多构建工程文件。
在bin目录下,主要包含xxx.exe和xxx.dll文件。
在include目录下,以模块来划分目录结构,如下图所示:
这里以xml模块为例,那么xml对应的模块目录是【QtXml】。该目录下的内容如下图所示:
如上图所示,可见目录中包含了关于xml的重要文件和头文件。
在进行项目开发时,当通过QT += xml后,解析器将到【QtXml】目录下找相关的头文件,所以当使用#include 时,才能找到对应的文件,从而解析到相关的头文件。如下图所示:
在lib目录下,主要包含xxx.a、xxx.prl、xxx.dll.debug等文件。如下图所示:
接下来,就是一个很重要的目录:【mkspcs】,该目录下有一个modules目录,当使用QT变量添加模块后,解析器是如何找到对应的目录的呢,主要还是与modules目录下的文件有关,如图下图所示:
这里以xml模块为例,与xml模块相关的描述文件是:qt_lib_xml.pri 、qt_lib_xml_private.pri。显然,以后缀.pri描述的文件都是用于进行模块描述的,如下图所示。文件qt_lib_xml.pri文件主要用于模块描述。
其中,qt_lib_xml.pri文件中内容指明了与xml模块相关的参数:模块名称、库路径、头文件路径、二进制路径、模块名等。
故解析器通过解析该文件中的参数字段,即可获取到关于xml模块的参数信息。
二、总结
本文以Windows为平台,以具体的xml模块为例,分析了Qt的模块机制。主要分析了Qt的模块是如何进行解析和加载的。在下文中,将分享如何创建自定义的模块,并添加到Qt目录结构中。
参考链接:
https://wiki.qt.io/Creating_a_new_module_or_tool_for_Qt
本文未完待续!!!