QT学习笔记-编译部署QtMQTT

2022年01月13日 阅读数:6
这篇文章主要向大家介绍QT学习笔记-编译部署QtMQTT,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

准备工做

下载安装QT

若是须要从新安装QT,在安装过程当中,要把Perl给选中,若是不选中,编译时会报错。
在这里插入图片描述html

下载Qt MQTT模块

点此下载
下载时,注意选择与所安装QT版本一致的分支。git

编译Qt MQTT模块

解压

将下载下来的qtmqtt压缩包解压到合法路径下github

复制相关头文件

1)在QT安装目录下,选择对应的QT版本和经常使用的编译器,笔者经常使用 MSVC 2017 32-bit,选择进入此编译版本文件夹并进入include文件夹,在此目录下新建QtMqtt文件夹。
2)将**.\src\mqtt**文件夹中的全部.h的文件所有复制到(1)中的QtMqtt文件夹内。若是不复制可能会报错。报错以下:error: QtMqtt/qmqttglobal.h: No such file or directoryweb

打开工程

直接双击解压文件夹下的qtmqtt.pro文件打开,会出现个弹窗让选择编译环境,选择经常使用的便可。
在这里插入图片描述
在这里插入图片描述svg

编译工程

选择Release版本,而后点击编译(也就是点击最下面的小锤子)。等待编译完成。
完成后在同级目录下生成.\build-qtmqtt-Desktop_Qt_5_12_10_MSVC2017_32bit-Release
在这里插入图片描述测试

部署Qt MQTT模块

编译出来的Qt Mqtt库,要使用它有三种方式,第一种是直接将源码代入工程,第二种是直接在项目中导入外部库和头文件,还有一种是将其以模块的形式部署到Qt的安装目录,其中第三种的好处就是,只须要作一次操做,之后须要再用Mqtt库就能够直接调用了,不须要每次都导入外部库。ui

头文件(include)

1.在编译时,咱们已经复制过,此处再次复制编译后目录中的include文件夹内QtMqtt文件夹到编译器版本下的include文件夹内,主要是有个QtMqttDepends文件;
2.回到编译源码中,复制qtmqtt\src\mqtt\目录下的全部".h“文件,不包含结尾为”_p.h“头文件,到\Qt\Qt5.12.10\5.12.10\目录下对应的编译器版本中的include目录下的QtMqtt文件夹中,提示已经存在选择覆盖.
3.回到编译源码中,复制qtmqtt\src\mqtt\目录下的全部”_p.h"文件,到\Qt\Qt5.12.10\5.12.10\目录下对应的编译器版本中的include目录下的QtMqtt\5.12.10\QtMqtt\private文件夹中,提示已经存在选择覆盖.spa

库文件(lib)

将编译后的文件夹下的lib文件和prl文件复制到经常使用编译环境下的lib文件夹下。
复制lib文件夹中的cmake\Qt5Mqtt\整个目录到经常使用编译环境下的lib\cmake\目录中
在这里插入图片描述code

动态库文件/运行库文件(dll)

将mqtt编译出来的bin目录下的2个dll拷贝到经常使用编译环境下的bin文件夹下。
(注意:bin下的2个dll其实与lib下的2个dll是如出一辙的)xml

模块配置文件

将mqtt编译出来的mkspecs\modules-inst\下的pri文件拷贝到安装目录经常使用编译环境下的mkspecs/modules中

引用QtMQTT

通过以上配置,后续开发使用mqtt模块只需完成如下两个步骤

引入模块:

QT += mqtt

包含头文件

#include <QtMqtt/QtMqtt>

使用官方DEMO

为了方便演示,咱们直接使用Qt Mqtt源码中自带的simpleclient示例来编译运行。
这个示例Qt官方有详细介绍的,https://doc.qt.io/QtMQTT/qtmqtt-simpleclient-example.html
将该示例打开,有个地方须要改一下,打开Pro文件
在这里插入图片描述
将以上两行注释掉,要否则会有依赖,没法独立运行。
编译无错,直接运行。

尝试通讯

根据官方文档,选择broker.hivemq.com进行测试链接。

后续使用

后续使用可参考文档,使用 QMqttClient类进行