本文主要讲述在windows平台下QT5.7.1如何编译MQTT客户端,让大家避免我走过的一些弯路。具体MQTT的使用后续会进行更新。
一. 下载源码
一般需要在github或者其它地方下载MQTT客户端的源码,一般都可以下到,这里附上链接: https://github.com/emqtt/qmqtt
注意,此源码必须使用QT5.3以上版本编译。
二. 编译MQTT库
1. 下载完成后,解压qmqtt-master.zip文件夹,会看到如下目录:
原样解压后,此目录下无lib以及include目录。
2. 进入上图所示的src文件夹,用QT5.7.1打开src.pro工程,选择release模式,注意勾选掉shadow build选项,如下图所示:
3. 进行编译,编译完成后,会在原始解压根目录下生成lib文件夹与include文件夹,如下图所示,可步骤1中的图片进行比较。
4. 将生成的lib文件夹以及src目录下的mqtt文件夹全部拷贝到要使用MQTT服务的工程下,比如此处我拷贝到了我自己的测试程序目录下。mqtt文件夹下主要包含的是所需要的MQTT头文件,lib为所需要的MQTT库文件。
5. 添加头文件qmqtt.h。在工程中添加刚才复制过来的mqtt文件夹下的qmqtt.h头文件,只需要添加这一个头文件即可。
6. 添加库文件。选择添加库-外部库,然后选择刚才复制过来的lib文件夹下的libqmqtt.a和libqmqttd.a两个库,都添加到工程中。同时,在pro文件中增加头文件绝对路径: 如下代码为示例,增加后,可在自己的代码中直接引用MQTT头文件。
INCLUDEPATH +="F:\studysoftware\QT5\QT5.7.1\testMQTT\mqttText\mqtt"
7. 至此,所有的步骤均已完成。在测试代码中,完成对MQTT类的引用,如测试代码所示:
#include "widget.h"
#include <QApplication>
#include "qmqtt.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMQTT::Client *client = new QMQTT::Client();
client->setClientId("ClientId");
client->connectToHost();
Widget w;
w.show();
return a.exec();
}
8. 至此,QT使用MQTT客户端的编译工作就完成了。