windows下Qt5自动编译配置QtMqtt环境(11)

### 文章目录

  • [@[toc]](#文章目录 @[toc] 1、概述 2、准备 1.1 下载源码 1.2 配置环境 1.3 解释原理 3、编译 4、验证 5、参考 6、视频)
  • [1、概述](#文章目录 @[toc] 1、概述 2、准备 1.1 下载源码 1.2 配置环境 1.3 解释原理 3、编译 4、验证 5、参考 6、视频)
  • [2、准备](#文章目录 @[toc] 1、概述 2、准备 1.1 下载源码 1.2 配置环境 1.3 解释原理 3、编译 4、验证 5、参考 6、视频)
  • [1.1 下载源码](#文章目录 @[toc] 1、概述 2、准备 1.1 下载源码 1.2 配置环境 1.3 解释原理 3、编译 4、验证 5、参考 6、视频)
  • [1.2 配置环境](#文章目录 @[toc] 1、概述 2、准备 1.1 下载源码 1.2 配置环境 1.3 解释原理 3、编译 4、验证 5、参考 6、视频)
  • [1.3 解释原理](#文章目录 @[toc] 1、概述 2、准备 1.1 下载源码 1.2 配置环境 1.3 解释原理 3、编译 4、验证 5、参考 6、视频)
  • [3、编译](#文章目录 @[toc] 1、概述 2、准备 1.1 下载源码 1.2 配置环境 1.3 解释原理 3、编译 4、验证 5、参考 6、视频)
  • [4、验证](#文章目录 @[toc] 1、概述 2、准备 1.1 下载源码 1.2 配置环境 1.3 解释原理 3、编译 4、验证 5、参考 6、视频)
  • [5、参考](#文章目录 @[toc] 1、概述 2、准备 1.1 下载源码 1.2 配置环境 1.3 解释原理 3、编译 4、验证 5、参考 6、视频)
  • [6、视频](#文章目录 @[toc] 1、概述 2、准备 1.1 下载源码 1.2 配置环境 1.3 解释原理 3、编译 4、验证 5、参考 6、视频)
更多精彩内容
👉内容导航 👈
👉Qt网络编程 👈

1、概述

  • Qt默认是不包含mqtt库的,如果需要使用到mqtt库就只能自己编译配置;

  • 网络所有的QtMqtt配置的文章都是编译完成手动复制,非常麻烦,对新手也非常不友好吗,容易漏了一些步骤;

  • 本文中主要说明windows下如何自动编译配置 QtMqtt,无需手动拷贝 、生成帮助手册

注意:

  1. 编译前需要安装perl,如果没有perl则编译后生成的头文件都是带.h后缀的。
  2. 工程里面需要有一个.git文件夹,否则不会指向perl。
  3. 如果不安装perl也可以编译,不过后续会出现部分报错,需要手动添加头文件。
  4. 只是Qt5需要安装perl,Qt6不需要。

演示环境:

环境 版本
系统 windows11
Qt 5.14.2
QtMqtt 5.14.2
编译器 mingw73_64、msvc2017_64

2、准备

1.1 下载源码

  • 命令行下载源码:下载完成后选择QtMqtt版本,与Qt版本相同或者相近;
shell 复制代码
git clone https://github.com/qt/qtmqtt.git
git clone http://code.qt.io/qt/qtmqtt.git
git clone https://code.qt.io/qt/qtmqtt.git

git tag   # 查看分支
git checkout 5.14.2  # 切换分支
  • 浏览器下载源码:

1.2 配置环境

windows安装perl有几种方式,可以任意选择一种安装。

方法1:

  • qt-opensource-windows-x86-5.14.2.exe离线安装包中内置了perl,不过需要在安装时勾选,安装完成Qt后再手动安装;
  • 如下图所示,离线安装时勾选Strawberry Perl
  • 安装完成后进入安装路径下D:\Qt\Qt5.14.2\Tools\Perl52213_32,就可以看见perl安装包了,然后运行perl安装包进行安装就可以。

方法2:

  • 然后打开环境变量,点击path,添加perl/bin文件夹路径到环境变量;
  • 保存关闭后,打开cmd窗口,检查perl是否生效;

1.3 解释原理

  • Qt编译QtMqtt模块可以使用perl也可以不使用,使用perl在这里主要是为了生成不带.h后缀的头文件,并且自动拷贝头文件到Qt安装路径下;
  • 如果不安装perl就需要手动拷贝QtMqtt头文件,并且在后续使用QtMqtt过程中只能使用带.h后缀的头文件,例如:
cpp 复制代码
#include <qmqttclient.h>  // 正常
#include <QMqttClient>    // 报错
  • 不安装perl的编译方式
  • 然后我们打开src/mqtt/mqtt.pro文件,在文件最下面有一行load(qt_module)代码,这行代码就是用来构建模块的;
  • 进入qt_module.prf 文件后,有一行load(qt_build_paths)代码;
  • 再进入qt_build_paths.prf 文件,可以看出文件中会判断构建的源码工程下是否有.git文件夹,如果存在.git文件夹就会执行CONFIG += git_build配置;
  • git_build配置位于qt_module_headers.prf文件中,如下图所示,git_build就是调用perl syncqt.pl脚本的配置;
  • 所以,默认情况下QtMqtt源码文件夹下必须有一个**.git** 文件夹,否则不会调用perl
  • 使用git clone 下载的源码都带有.git文件夹,如果是直接在浏览器下载的就没有,这里有两个解决办法;
    1. 在源码文件夹下创建一个.git文件夹;
    2. 将qt_build_paths.prf文件中21行注释掉。

3、编译

  • qtmqtt.pro 文件使用qtcreator打开,然后选择编译器,在设置完编译器之后就会自动在build文件夹下生成头文件;(如果perl升序就不会生成头文件)
  • 如下图所示会显示执行perl的日志信息。
  • 添加编译配置;

    • 选择【项目】【构建】【添加构建步骤】【make】;
    • 第一个:在make参数 项添加docs,用于生成帮助手册;(只需要执行一次)
    • 第二个:在make参数 项添加install_docs,用于自动安装帮助手册;(只需要执行一次)
    • 第三个:在make参数 项添加install,用于自动安装编译好的qtmqtt;
    • 注意: 由于帮助手册是安装到公共路径,而其它头文件、动态库是安装到编译器路径下,所以如果给多个编译器配置时docs、install_docs只需要配置一次,而install每个编译器都需要配置。
  • 编译报错:是因为使用mingw32-make.exe install安装报错如下所示,这是因为QtMqtt源码放的位置不对;
shell 复制代码
D:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin\qmake.exe -install qinstall E:\test\qtmqtt\build\MinGW730_64-Debug\include\QtMqtt\qtmqttversion.h D:\Qt\Qt5.14.2\5.14.2\mingw73_64\include\QtMqtt\qtmqttversion.h
D:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin\qmake.exe -install qinstall E:\test\qtmqtt\build\MinGW730_64-Debug\include\QtMqtt\QtMqttVersion D:\Qt\Qt5.14.2\5.14.2\mingw73_64\include\QtMqtt\QtMqttVersion
D:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin\qmake.exe -install qinstall E:\test\qtmqtt\build\MinGW730_64-Debug\include\QtMqtt\QtMqtt D:\Qt\Qt5.14.2\5.14.2\mingw73_64\include\QtMqtt\QtMqtt
mingw32-make[3]: Leaving directory 'E:/test/qtmqtt/build/MinGW730_64-Debug/src/mqtt'
mingw32-make[2]: *** [Makefile:55: debug-install] Error 2
mingw32-make[2]: Leaving directory 'E:/test/qtmqtt/build/MinGW730_64-Debug/src/mqtt'
mingw32-make[1]: *** [Makefile:62: sub-mqtt-install_subtargets] Error 2
mingw32-make[1]: Leaving directory 'E:/test/qtmqtt/build/MinGW730_64-Debug/src'
mingw32-make: *** [Makefile:64: sub-src-install_subtargets] Error 2
15:13:40: 进程"D:\Qt\Qt5.14.2\Tools\mingw730_64\bin\mingw32-make.exe"退出,退出代码 2 。
Error while building/deploying project qtmqtt (kit: MinGW730-64)
When executing step "Make"
  • 如下所示,将qtmqtt源码放到D:\Qt\Qt5.14.2\5.14.2\Src路径下;名称影响。
  • 然后使用点击构建,构建完成后就会自动将编译生成的所有文件安装到Qt路径下,这里使用mingw73_64编译器就会将编译生成的文件安装到下面路径了,不需要手动拷贝。
shell 复制代码
D:\Qt\Qt5.14.2\5.14.2\mingw73_64\include\QtMqtt
D:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin\Qt5Mqtt.dll
D:\Qt\Qt5.14.2\5.14.2\mingw73_64\mkspecs\modules\qt_lib_mqtt.pri
D:\Qt\Qt5.14.2\5.14.2\mingw73_64\mkspecs\modules\qt_lib_mqtt_private.pri
D:\Qt\Qt5.14.2\5.14.2\mingw73_64\lib\libQt5Mqtt.a
D:\Qt\Qt5.14.2\Docs\Qt-5.14.2\qtmqtt.qch

4、验证

  • 将qtmqtt\examples\mqtt路径下的示例工程复制 出来,使用qtcreator打开进行编译。
  • 如果不复制到qtmqtt工程外,可能无法编译,错误如下所示,工程中文件呈现灰色。
shell 复制代码
Project ERROR: You cannot build examples inside the Qt source tree, except as part of a proper Qt build.
  • 将示例程序复制 出来后就编译正常了。(如果没有使用perl,这里编译会显示找不到#include <QMqttClient>文件)
  • 编译成功后如下所示:
  • 使用qtmqtt只需要在pro文件中添加QT += mqtt就可以引入。

5、参考

6、视频

windows下全网最详细、最简单的QtMqtt编译配置教程;



相关推荐
看到我,请让我去学习28 分钟前
Qt— 布局综合项目(Splitter,Stacked,Dock)
开发语言·qt
创想未来CTF29 分钟前
Qt同步处理业务并禁用按钮
qt
谱写秋天6 小时前
Qt 5.5 的安装与配置(使用 VSCode编辑)
开发语言·vscode·qt
cpsvps_net14 小时前
美国服务器环境下Windows容器工作负载智能弹性伸缩
windows
甄超锋15 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
cpsvps17 小时前
美国服务器环境下Windows容器工作负载基于指标的自动扩缩
windows
网硕互联的小客服20 小时前
Apache 如何支持SHTML(SSI)的配置方法
运维·服务器·网络·windows·php
etcix20 小时前
implement copy file content to clipboard on Windows
windows·stm32·单片机
前端市界21 小时前
前端视角: PyQt6+Vue3 跨界开发实战
前端·qt·pyqt
许泽宇的技术分享21 小时前
Windows MCP.Net:基于.NET的Windows桌面自动化MCP服务器深度解析
windows·自动化·.net