Qt6 qtmqtt编译及演示示例(附带动态库)

白色玫瑰 程序猿

时间: 2023-07-16 阅读: 1 字数:7117

{}
随着物联网的不断发展,如今很多项目都需要接入,而两年前也是因为项目需要,了解...我之前刚接触的时候还没有Qt6,那时候我的编译环境是,下载代码后直接qmake编译,编译过程也很顺利,基本没遇到什么困难,一路畅通。

前言

随着物联网的不断发展,如今很多项目都需要接入,而两年前也是因为项目需要,了解了一些关于mqtt的用法,并将其过程记录成几篇博客,近一年多时间陆陆续续有好多人私信咨询关于mqtt相关的问题,其中又有很多是关于最基础的源码编译相关的。我之前刚接触的时候还没有Qt6,那时候我的编译环境是Qt5.12.3+vs2017,下载代码后直接qmake编译,编译过程也很顺利,基本没遇到什么困难,一路畅通。 随着Qt6的发布,Qt官方开始推崇cmake编译,而qtmqtt对应的版本和Qt发布的版本一致的,所以qtmqtt从6.0发布以来,也开始默认用cmake编译。这样一来,很多之前习惯用Qt5的童鞋就有点摸不着头脑了,特别是一些刚入门的新手,看到Qt工程,习惯性的一上来就去找pro工程文件,但是Qt6的cmake工程是没有pro文件的,所以更是二脸懵逼。接着又是在之前的文章评论,又是私信来问。本来我自己也没有安装Qt6,索性趁空闲时间配置一个Qt6环境然后重新编译一下qtmqtt,然后运行demo重新跑一遍。把过程详细记录下来,供有需要的参考。

之前的博文地址: <a href="https://luoyayun361.blog.csdn.net/article/details/104671603">Qt开发MQTT(一) 之Qt官方Qt MQTT</a> <a href="https://blog.csdn.net/luoyayun361/category_9777370.html">其他文章</a>

<hr>

资源在这里,<a href="https://download.csdn.net/download/luoyayun361/87300605">点击下载</a>

环境:Qt6.2.4+vs2019 x64 里面包含了编译好的Debug和Release动态库 ,以及qt在线安装包软件和perl安装包。

<hr>

正文

回到主题,今天的目的是使用Qt6编译qtmqtt,目前Qt最新发布的版本是Qt6.4.1,我比较喜欢用长维版本(比较稳定,Qt官方长期维护),目前Qt6的长维版本是6.2.4,所以我配置的Qt环境是Qt6.2.4+vs2019 x64

Qt安装及环境配置就不说了吧,新版本的Qt都是在线安装的,在官方下载一个安装器,选择相应的版本安装就可以了。 接下来我们主要看qtmqtt的流程。

qtmqtt源代码下载

源代码在github上 ,地址:https://github.com/qt/qtmqtt 将代码clone到本地后,先开看下项目分支: 在这里插入图片描述 可以看到qtmqtt是从最早的5.10版本开始,一直到现在最新的6.3.0版本,这里的版本号是对应Qt的发布版本号。由于我配置的Qt环境是Qt6.2.4,所以这里也对应将qtmqtt的 6.2.4分支迁到本地。

 git checkout -b 6.2.4 origin/6.2.4

在这里插入图片描述 如果你想编其他版本,那么下载对应的源代码就可以了。

源代码目录: 在这里插入图片描述

环境准备

除了配置Qt和vs环境, 在编译mqtt之前,需要先安装perl,python,conan python安装直接在官网下载,安装完设置环境变量 conan安装有两种方式,一种是pip安装,需要python环境,另一种是官网下载exe安装。由于已经安装了python,所以可以直接用pip安装,更方便一些,直接cmd打开终端,输入 pip install conan 就可以安装了。

全部安装完后,记得设置环境变量: 在这里插入图片描述

编译

接下来在Qt Creator中打开qtmqtt源码,前面说了 Qt6默认是cmake编译,所以没有pro工程文件,mqtt源码下只有CMakeLists文件,所以在Qt Creator的时候直接载入CMakeLists文件即可。 在这里插入图片描述 导入后是这样 在这里插入图片描述

ok,接下来有个很重要的步骤,在Qt Creator中使用系统环境变量

点击 项目, 找到 构建 环境变量 在这里插入图片描述 点击path项,然后点击右侧的 Edit按钮,弹窗点击确定。 在这里插入图片描述

然后再编译,就成功了 在这里插入图片描述 如果不设置的话 ,还是会报错。

ok了,经过以上步骤可以快速的编译出debug和release版本了。

编译出来的文件 在这里插入图片描述

编译Demo

库编译完成,接下来跑一个demo。 在mqtt源码目录下有examples,里面有一些基础demo,拷贝一个出来跑一下。 在这里插入图片描述 示例里面还是保留了之前的工程文件pro,所以导入到Qt Creator后直接qmake编译就可以。 但是demo中有些地方需要改一下,由于我们编译完mqtt后没有将库和modules等相关文件拷贝配置到Qt的安装目录下去,所以直接引用mqtt模块是找不到的。

所以直接按第三方库使用的方式,单独把lib、dll、include 文件放到自己的demo中去引用就行了。 而mqtt自带的demo就需要改造一下才能用。 打开simpleclient.pro文件 在这里插入图片描述 这里直接去掉mqtt模块引用,以及target path设置 手动添加一个mqtt.pri模块 创建一个mqtt文件夹 在这里插入图片描述 将lib 和 include文件拷贝过来放到模块中,这样也方便后期直接挪到其他项目中去使用 在这里插入图片描述 注意,这里用到的include 头文件不能直接用编译源码输出目录下的include文件, 就是这个 在这里插入图片描述 千万不能直接把源码输出目录下的include文件拷到自己项目中去使用,因为这里面的头文件只是一个源码相对路径的文件引用。拿到自己的项目中去使用会报错,所以应该直接从mqtt源码目录下把真正的头文件拷贝出来放到include下面。 在这里插入图片描述 mqtt.pri文件是自己创建的,添加库引用

!contains(INCLUDEDFIES, mqtt.pri) {
INCLUDEDFIES += mqtt.pri

INCLUDEPATH += $$PWD/include
DEPENDPATH += $$PWD/include


win32:CONFIG(release, debug|release): LIBS += -L$$PWD/lib/ -lQt6Mqtt
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lib/ -lQt6Mqttd

}

接下来修改mainwindow.h中的头文件引用 在这里插入图片描述 这里是直接以模块的方式引用头文件,由于我们没有添加mqtt模块到Qt安装目录下,所以这里要修改成demo目录下的头文件引用

#include "QtMqtt/qmqttclient.h"

然后 cpp中的头文件引用直接注释掉,多余了 在这里插入图片描述

接下来就可以直接编译这个demo了。

运行起来是这样 在这里插入图片描述 在以前的文章中已经介绍过这个demo,<a href="https://luoyayun361.blog.csdn.net/article/details/104671603">文章在这里</a>

Qt官方提供了一个测试服务器地址,直接在 Host处输入:broker.hivemq.com 然后点击connect连接 在这里插入图片描述 状态是2表示连接成功,接下来点击订阅,然后点击发布按钮,就可以收到发布的消息了 在这里插入图片描述

ok了 大功告成。

最后

将本次编译出来的动态库及demo打包出来了,有需要的可以下载,

<hr>

资源在这里,<a href="https://download.csdn.net/download/luoyayun361/87300605">点击下载</a>

环境:Qt6.2.4+vs2019 x64 里面包含了编译好的Debug和Release动态库 ,以及qt在线安装包软件和perl安装包。

<hr> 在这里插入图片描述

demo下的mqtt目录可以直接拷贝到其他项目使用 在这里插入图片描述

Finish~

原文地址:https://blog.csdn.net/luoyayun361/article/details/128339682?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168949707716800215098447%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168949707716800215098447&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-14-128339682-null-null.142^v88^insert_down1,239^v2^insert_chatgpt&utm_term=%E6%80%8E%E4%B9%88%E6%89%93%E5%BC%80qt6%E9%A1%B9%E7%9B%AE

本文章网址:https://www.sjxi.cn/detil/7149a8b4aea742708ea823de27479c6f

最新评论

当前未登陆哦
登陆后才可评论哦

湘ICP备2021009447号

×

(穷逼博主)在线接单

QQ: 1164453243

邮箱: abcdsjx@126.com

前端项目代做
前后端分离
Python 爬虫脚本
Java 后台开发
各种脚本编写
服务器搭建
个人博客搭建
Web 应用开发
Chrome 插件编写
Bug 修复