参考例子:https://github.com/emqx/qmqtt

有时候我们需要自定义一个模块,使用qmake、make、make install等工具编译安装后,开发者可以使用该模块,就像使用QT模块一样。
比如把qmqtt下载到本地,编译安装后,直接在pro文件中QT += qmqtt,包含头文件即可使用qmqtt的功能。
如果自己制作一个类似的库,需要注意哪些?

1、顶层目录文件.qmake.conf

  # Find the module's source root dir.
  isEmpty(_QMAKE_CONF_): error("Project has no top-level .qmake.conf file.")

2、顶层目录pro文件中的load(qt_parts)

3、子目录pro文件中的load(qt_module)

4、make install没有安装头文件

一般来说,在执行完qmake && make命令后,会在 build目录生成一个 include 子目录,include 目录下有一个以模块名字命名的子目录,它里边会有需要安装的所有头文件(.h)以及一个 headers.pri 文件。
headers.pri 文件记录了需要安装的头文件列表;但是自定义的模块,执行make以后,build 目录下没有对应的头文件,headers.pri 文件也没有记录头文件信息。
很自然的,执行make install 也没有把头文件安装到 Qt 的安装目录中,开发者也就无法导入头文件,不能正常使用这个自定义的模块。
基于上述这个问题,定位查找原因(找了好久,记录下),发现了两个关键点:

Image