QT 移植MQTT

        下载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

QT 移植MQTT_第1张图片

     修改完成后双击qtmqtt.pro打开工程并构建工程,构建成功后会在输出文件夹产生include文件夹和lib文件夹,然后将这两个文件夹复制到其他地方并删除libQt5Mqtt.a、libQt5Mqttd.a、Qt5Mqtt.dll、Qt5Mqttd.dll之外的其他文件,将原文件qtmqtt\src\mqtt中的*.h

QT 移植MQTT_第2张图片

复制到include/QtMqtt文件夹下并替换原来的*.h文件,将include/QtMqtt里面的5.9.2文件夹删除


QT 移植MQTT_第3张图片

建立mqtt工程:

        新建QT工程,并将上一步生成的lib和include文件夹复制到当前的新工程目录下,在QT中当前工程上右键选择“添加库”,出现如下界面,然后选择外部库。

QT 移植MQTT_第4张图片


点击下一步出现如下界面:

QT 移植MQTT_第5张图片

库文件:选择刚才复制到工程下的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 

附上写的一个简单的测试客户端,还不是太完善

https://github.com/DanielLiMing/QtMqttClient.git


你可能感兴趣的:(QT,QT,MQTT)