据说qt6商业版自带mqtt模块,咱开源用户只能自己编译了。
- 搭建交叉编译环境
- 交叉编译qt 5.9.5
- 编译qtmqtt源码
- 配置开发环境
安装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目录
/<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应该都可以用)。