参考文档
前言
mqtt官方库不在Qt中,而是需要另外下载源码然后编译生成库,至于源码网址我没有从官方网站找到,前辈们说了下面两个网址。
github地址:
https://github.com/emqtt/qmqtt https://github.com/qt/qtmqtt
我使用的是下面这个,据说是官方的:
step1 编译
下载后,打开最外层的qtmqtt.pro项目文件,构建中会包文件找不到,如 <QtMqtt/qmqttglobal.h>等文件,
主要原件是编译器是按照在Qt安装目录下搜索的,但我们文件是我们自己随意放的目录下的 src\mqtt 路径下。
因此,在Qt安裝路徑的頭文件目錄下,新建QtMqtt目錄,
C:\Qt\Qt5.11.3\5.11.3\mingw53_32\include\QtMqtt
将src/mqtt目录的所有头文件全部拷贝到QtMqtt目录下。
step2 精简有用的库文件
我们可以在项目工程目录下看到生成的库文件和头文件,但需要修改一些。
工程目录下的include文件夹不是真正的头文件,而是一些说明内容
打开include中任意头文件发现,这里都是执行源码中的同名文件的,这肯定不行,真正使用库的时候是没有源码只有库的,所以需要把include目录下所有的.h头文件都替换成源码目录中的同名文件。
这操作这是。。。制作库还能去引用依赖源码路径和内容?为啥不直接拷贝过来?还需要手动去拷贝下。
至此,lib、include就是我们需要的库文件所有的内容了。
step3 将库导入到工程
创建一个新工程,软件把mqtt库文件拷贝到新工程目录
将库文件添加到新工程中,
此时该工程就可以使用mqtt库了。
另外还有一种模块化部署的说法
红胖子大侠说的很清楚
大概需要五个步骤:
1、将源码中的头文件挑出来,放到安装目录,注意是独立新建一个QtMqtt的文件夹
C:\Qt\Qt5.11.3\5.11.3\mingw53_32\include\QtMqtt
2、将库源码生成的的libD:\qt\test\build-qtmqtt-Desktop_Qt_5_11_3_MinGW_32bit-Release\lib目录下的文件全部拷到C:\Qt\Qt5.11.3\5.11.3\mingw53_32\lib
3、将动态库拷到bin目录拷到 C:\Qt\Qt5.11.3\5.11.3\mingw53_32\bin目录下
4、模块配置文件
上图文件拷贝到下图的位置。
5、头文件别名文件的创建,这个也是我比较困惑的地方,linux的.so库的路径引用、头文件别名也是自动生成的,这个成了手动的,不敢相信
在上图安装目录的头文件目录创建一个QtMqtt的文件,注意是没有后缀的,在在这个文件中写一句话,后面包含头文件就可以直接是包含这个文件而不用包含其他的文件。