据说qt6商业版自带mqtt模块,咱开源用户只能自己编译了。

  1. 搭建交叉编译环境
  2. 交叉编译qt 5.9.5
  3. 编译qtmqtt源码
  4. 配置开发环境

安装git,从github上克隆qtmqtt 5.10仓库

sudo apt-get install -y git
git clone https://github.com/qt/qtmqtt.git
git checkout 5.10

修改仓库根目录下的.qmake.conf文件,将MODULE_VERSION改成5.9.5,生成的so文件的后缀就是5.9.5

用qtcreator打开仓库根路径下的qtmqtt.pro,构建目标选择上述2中配置好的交叉编译环境即可

将编译生成的libQt5Mqtt.so、libQt5Mqtt.so.5、libQt5Mqtt.so.5.10和libQt5Mqtt.so.5.10.0复制到Qt的交叉编译环境路径下的lib目录

将qtmqtt源码路径下的头文件

/<your_path>/qtmqtt/src/mqtt

复制到Qt交叉编译环境(即交叉编译qt源码时候configure命令的-prefix参数后面的路径)

/<your_path>/include/QtMqtt

在项目中加载库文件并包含对应头文件即可(#include <QtMqtt/qmqttclient.h>,用尖括号包含,需要Qt的交叉编译环境路径在环境变量中)

2024-04-16更新:

上次用qtmqtt仓库5.10版本源码编译,发现这个版本只支持到mqtt协议的3.1.1,不支持5.0版本,用5.15.2版本重新编译,适用于rk3399(armv8应该都可以用)。

下载:libQt5Mqtt.5.15.2 头文件