Qt6.5.2 安装官方MQTT库,使用CMake编译,Qt安装其他第三方库通用教程

为了在Qt里装一个MQTT库,我看了好多教程,好多都是比较老的Qt版本,要么就是讲的不太清楚。虽然整个过程都差不多,不过为了照顾啥都不懂的小白(比如我),写一整个流程还是很有必要的。

目录

一、安装Qt

二、下载Qt官方MQTT库

三、本地CMake编译

四、Qt 安装 QtMqtt 模块

1. bin文件夹

2. include 文件夹(有后续操作)

3. lib文件夹

4. mkspecs\modules 文件夹

5. modules 文件夹

6. include 文件夹后续操作

五、MQTT模块使用

六、补充:在工程项目中部署Mqtt库

1. lib 文件夹

2. include 文件夹

3. 添加库


一、安装Qt

教程一堆,这里不做过多赘述,如果走官方下载途径的话,选择开源版本的就可以。官方下载网站一步到位:Download Qt OSS: Get Qt Online Installer

其中可能需要选择下载的组件,我是参考了下面这篇博客,跟着文章里面选择组件即可。【Qt安装教程(Qt 6.4)_一只羊_的博客-CSDN博客

二、下载Qt官方MQTT库

官方github仓库连接:qt/qtmqtt: Qt Module to implement MQTT protocol version 3.1 and 3.1.1 http://mqtt.org/ (github.com)

 克隆到本地文件夹中,最好文件目录不包含中文

然后切换git分支,切换到和Qt版本相同的分支, 这里我们切换到6.5.2。

git branch -a # 查看所有分支,退出阅读按个Q键就行
git checkout remotes/origin/6.5.2  # 切换至6.5.2分支

三、本地CMake编译

接下来,我们使用Qt打开这个项目。打开Qt后点击“打开项目”,在选定文件的时候选择刚刚克隆的官方库中的CMakeLists.txt。

然后正常配置项目。

 打开项目后,我们切换到Release构建模式。

 在等待右下角的进度条完成以后,我们点击左下角的小锤子进行构建。

 我这里构建是没有任何报错的,一路绿灯,事实上正常下载官方的Qt基本上都没什么问题。

四、Qt 安装 QtMqtt 模块

在编译完成后,于代码的同级目录下出现了如下编译文件夹:

 我们打开带有Release后缀的文件夹,然后再打开Qt安装时选择的安装目录,将Release中部分有用的文件迁移到Qt的安装目录中。我的安装目录是:D:\Qt_code\6.5.2\mingw_64(别问为什么装到带code的文件夹里,问就是手滑

1. bin文件夹

将bin文件夹中的Qt6Mqtt.dll文件移动到Qt bin文件夹中

2. include 文件夹(有后续操作)

将include文件夹中的QtMqtt文件夹整个移动到Qt include文件夹中。

注意,当我们打开QtMqtt文件夹后,我们会发现很多头文件(.h),我们随便打开一个头文件,会发现其中的内容是下边这样:

#include "../../../qtmqtt/src/mqtt/qmqttauthenticationproperties.h"

居然在include源代码中的内容,这是有问题的!我们之后会对其进行修改,现在先不着急。

3. lib文件夹

 将lib文件夹中的内容按照格式移动到Qt lib文件夹中。具体包含:

文件夹:\lib\cmake\Qt6Mqtt   →   \lib\cmake

文件:\lib\pkgconfig\Qt6Mqtt.pc   →   \lib\pkgconfig

文件:\lib\libQt6Mqtt.a   →   \lib

文件:\lib\Qt6Mqtt.prl   →   \lib

4. mkspecs\modules 文件夹

两个目录下的 mkspecs 文件夹都打开至 mkspecs\modules ,将里面的文件全部移动到Qt的安装目录中。

5. modules 文件夹

将modules文件夹中的Mqtt.json文件移动到Qt modules文件夹中。

6. include 文件夹后续操作

我们刚刚说过,我们移动过去的 include/QtMqtt 中的头文件是有问题的!刚刚我们随机打开了其中一个头文件,其中内容如下:

#include "../../../qtmqtt/src/mqtt/qmqttauthenticationproperties.h"

既然它这么include,那我们就去对应目录看看是个什么情况。

 一打开,哦,原来是我们刚刚克隆的官方的代码。于是我们将刚刚include文件夹中的所有头文件(.h)全部替换成正版的头文件。原来错误的include文件夹中有什么头文件,我们就替换什么。我所处的6.5.2版本所有头文件如下:

qmqttauthenticationproperties.h
qmqttclient.h
qmqttconnectionproperties.h
qmqttglobal.h
qmqttmessage.h
qmqttpublishproperties.h
qmqttsubscription.h
qmqttsubscriptionproperties.h
qmqtttopicfilter.h
qmqtttopicname.h
qmqtttype.h
qtmqttexports.h
qtmqttversion.h

至此,安装过程到此结束。 

五、MQTT模块使用

官方使用文档:Qt MQTT 6.5.2

如果你和我一样,使用的是qmake,那么只需要在.pro中添加 QT += mqtt 就可以使用了。我们刚刚克隆的官方代码中也包含一些样例,在开发时我们都可以参考使用。目录为:qtmqtt\examples\mqtt。

注意,在使用MQTT通信的时候,切记:不要开代理!不要开代理!不要开代理!我之前因为这个被搞了好长时间没找到问题(悲)

六、补充:在工程项目中部署Mqtt库

除了在Qt中直接安装库,一劳永逸以外,我们也可以在项目中部署Mqtt库。简单的流程如下:

1. lib 文件夹

我们打开需要部署的工程项目的文件夹,将第三步编译后产生的Release文件夹中的lib文件夹整个复制到工程项目文件夹中去。这里我随便选了个“JsonSender”的工程项目。

2. include 文件夹

我们先在工程文件夹中新建 include 文件夹。 

然后找到刚刚克隆的源代码,找到 qtmqtt/src/mqtt/  这样的目录(没错,这个目录就是咱们之前在【四、5. include 文件夹后续操作】中查到的目录),将其中的所有头文件(.h)全部复制到刚刚我们新建的 include 文件夹中。

3. 添加库

然后我们在Qt中打开刚刚的工程项目,右击左边的项目文件夹,点击“添加库”

 这里我们选择外部库

库文件和包含路径选中我们刚刚添加的内容,点击下一步进入汇总,点击完成即可

         

如此一来,我们就完成了项目部署。之后在这个项目中使用时,我们只需要尽情 include 即可。

猜你喜欢

转载自blog.csdn.net/m0_56942491/article/details/132516553
今日推荐