下载MQTT使用的地方越来越多了,各大物联网平台也都提供了MQTT连接方式,使用mqtt的设备也越来越多,正好现在在学QT所以记录一下使用QT移植MQTT的过程,
开发环境:
WIN10+QT5.9
MQTT库下载地址:
http://code.qt.io/cgit/qt/qtmqtt.git
QT官方对qt的介绍以及示例
https://doc.qt.io/QtMQTT/qtmqtt-index.html
下载及编译mqtt库:
打开git执行如下指令下载mqtt源码到本地
git clone http://code.qt.io/cgit/qt/qtmqtt.git
下载完成后进入qtmqtt文件夹,由于mqtt库默认使用的qt版本号是5.11.0,而我安装的版本是5.9.2,又懒得升级了所以找到文件夹下的.qmake.conf文件并打开,将MODULE_VERSION版本号改为与自己的版本号相同
MODULE_VERSION = 5.9.2
复制到include/QtMqtt文件夹下并替换原来的*.h文件,将include/QtMqtt里面的5.9.2文件夹删除
![](https://i-blog.csdnimg.cn/blog_migrate/68fcdaa85ca82f3a95ba23c24364a60e.png)
建立mqtt工程:
新建QT工程,并将上一步生成的lib和include文件夹复制到当前的新工程目录下,在QT中当前工程上右键选择“添加库”,出现如下界面,然后选择外部库。
点击下一步出现如下界面:
库文件:选择刚才复制到工程下的lib/libQt5Mqtt.a文件
包含路径:选择刚才复制过来的include文件夹
平台:选择Window,
链接:选择静态库
然后点击下一步导入完成,然后工程的.pro文件添加network模块
QT += core gui network
此时的.pro文件如下:
#-------------------------------------------------
#
# Project created by QtCreator 2018-06-15T15:06:42
#
#-------------------------------------------------
QT += core gui network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = mqtt
TEMPLATE = app
# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
mainwindow.cpp
HEADERS += \
mainwindow.h
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/lib/ -lQt5Mqtt
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lib/ -lQt5Mqttd
INCLUDEPATH += $$PWD/include
DEPENDPATH += $$PWD/include
win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/lib/libQt5Mqtt.a
else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/lib/libQt5Mqttd.a
else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/lib/Qt5Mqtt.lib
else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/lib/Qt5Mqttd.lib
然后打开主程序文件添加头文件时程序会自动补全,此时mqtt库导入成功,可以开始后面的mqtt代码编写了。
#include <QtMqtt/QMqttClient>
附上写的一个简单的测试客户端,还不是太完善
https://github.com/DanielLiMing/QtMqttClient.git