Qt|Qt5.12.12安装Mqtt

文章目录

  • [🧩 一、Qt MQTT 模块介绍](#🧩 一、Qt MQTT 模块介绍)
  • [🚀 二、下载源码的两种方式](#🚀 二、下载源码的两种方式)
    • [✅ 方法 1:使用 Git 克隆(推荐)](#✅ 方法 1:使用 Git 克隆(推荐))
    • [✅ 方法 2:直接下载 ZIP 源码包](#✅ 方法 2:直接下载 ZIP 源码包)
  • [🏗️ 三、编译步骤(Windows 示例)](#🏗️ 三、编译步骤(Windows 示例))
    • [① 打开 Qt 的命令行环境](#① 打开 Qt 的命令行环境)
    • [② 进入源码目录](#② 进入源码目录)
    • [③ 生成构建文件](#③ 生成构建文件)
    • [④ 编译并安装模块](#④ 编译并安装模块)
    • [⑤ 编译完成后,检查目录:](#⑤ 编译完成后,检查目录:)
  • [🧠 四、在项目中使用](#🧠 四、在项目中使用)
  • [🧰 五、常见问题](#🧰 五、常见问题)
    • qmake构建失败
      • [为什么 Qt 的构建需要依赖 Perl?](#为什么 Qt 的构建需要依赖 Perl?)
      • [为什么 Windows 上必须安装 Strawberry Perl?](#为什么 Windows 上必须安装 Strawberry Perl?)
      • [Strawberry Perl 安装指南](#Strawberry Perl 安装指南)

因为需要使用4G通信,要安装mqtt组件,开始重新安装了一下qt,发现Qt 5.12.12 开源版安装器中默认是没有 "Qt for Automation / Qt MQTT" 选项的。因为 Qt MQTT 属于 Qt for Automation 套件,而那部分在 Qt 5.12 时代是商业授权模块,不会出现在普通开源安装器中。

但是Qt MQTT 模块(开源版)可以单独下载并编译 ,只要 Qt 环境已经安装好(比如 Qt 5.12.12 + MSVC 或 MinGW),就能手动添加它。下面介绍 如何下载 + 编译 + 集成 Qt MQTT 模块


🧩 一、Qt MQTT 模块介绍

模块名:qtmqtt

源码仓库:https://code.qt.io/cgit/qt/qtmqtt.git/

许可证:LGPLv3 / GPLv3(可用于开源项目)

适用版本:Qt 5.9 及以上(包括 5.12.12)


🚀 二、下载源码的两种方式

✅ 方法 1:使用 Git 克隆(推荐)

打开 Qt 的命令提示符(如 "Qt 5.12.12 for Desktop (MSVC 2017 64-bit)"):

bash 复制代码
cd D:\Qt\5.12.12\Src    # 或任意想放源码的位置
git clone https://code.qt.io/qt/qtmqtt.git
cd qtmqtt
git checkout 5.12

⚠️ 如果没有安装 Git,可在 https://git-scm.com/downloads 下载。


✅ 方法 2:直接下载 ZIP 源码包

无需 Git,访问:

👉 https://code.qt.io/cgit/qt/qtmqtt.git/

点击右上角 "Snapshot",选择:

复制代码
qtmqtt-5.12.zip

下载后解压,比如:

复制代码
D:\Qt\qtmqtt-5.12\

🏗️ 三、编译步骤(Windows 示例)

① 打开 Qt 的命令行环境

找到:

复制代码
开始菜单 → Qt → Qt 5.12.12 → (MSVC 2017 64-bit) → Qt 5.12.12 for Desktop

(这样环境变量已自动配置好 qmakenmake


② 进入源码目录

bash 复制代码
cd D:\Qt\qtmqtt-5.12\

③ 生成构建文件

bash 复制代码
qmake

如果你安装多个 Qt 版本,可指定 qmake 路径,例如:

bash 复制代码
"D:\Qt\5.12.12\msvc2017_64\bin\qmake.exe" .

④ 编译并安装模块

MSVC:

bash 复制代码
nmake
nmake install

MinGW:

bash 复制代码
mingw32-make
mingw32-make install

⑤ 编译完成后,检查目录:

复制代码
D:\Qt\5.12.12\msvc2017_64\include\QtMqtt\
D:\Qt\5.12.12\msvc2017_64\lib\Qt5Mqtt.lib
D:\Qt\5.12.12\msvc2017_64\bin\Qt5Mqtt.dll

若这些文件存在,就表示编译成功 ✅


🧠 四、在项目中使用

在你的 .pro 文件添加:

pro 复制代码
QT += mqtt

然后即可使用:

cpp 复制代码
#include <QMqttClient>

QMqttClient client;
client.setHostname("broker.hivemq.com");
client.setPort(1883);
client.connectToHost();

🧰 五、常见问题

问题 解决办法
Project ERROR: Unknown module(s) in QT: mqtt 没有执行 nmake install 或路径不对
qmake 找到错误版本 Qt 指定 Qt 5.12.12 的 qmake 路径
缺少 OpenSSL 库 安装 OpenSSL 1.1.x 并加入 PATH

qmake构建失败

因为Qt 构建系统(qmake)依赖 Perl------深入理解 qmake 与 Strawberry Perl

在使用 Qt5(尤其是 Qt 5.12 ~ Qt 5.15)进行 Windows C++ 开发时,很多开发者会遇到一个容易被忽略的问题:qmake 在某些操作中依赖 Perl,而 Windows 默认没有 Perl 环境


为什么 Qt 的构建需要依赖 Perl?

qmake 自身是 C++ 写的,不需要 Perl。但是 Qt 的部分构建工具是 Perl 脚本实现的

Qt 构建过程中涉及 Perl 的环节

Qt 5 内部有一些模块和工具采用 Perl 实现,例如:

🔹 1. Qt WebKit / Qt WebEngine 构建工具

QtWebKit 的早期构建工具使用大量 Perl 脚本,如:

  • 扫描 DOM
  • 生成绑定代码
  • WebKit 源码自动生成器

🔹 2. Qt 的自动代码生成器(部分)

虽然 moc/uic/rcc 是 C++ 程序,但某些 Qt 扩展模块(如 xmlpatterns)会依赖 Perl 脚本生成中间文件。

🔹 3. Qt Installer Framework

Qt IFW 制作安装包也需要 Perl。

🔹 4. Qt Qt5 configure & 构建流程(特别是源码编译)

如果你使用的是:

复制代码
qt-everywhere-src-5.x.x

在 Windows 上编译 Qt 需要 Perl 来执行:

  • configure 生成逻辑
  • ICU/WebKit 代码生成
  • 处理一些脚本自动化任务

换句话说:

qmake 本身不需要 Perl,但 Qt 的构建和部分模块依赖 Perl


为什么 Windows 上必须安装 Strawberry Perl?

Linux 和 macOS 系统内置 Perl,因此 Qt 在这些平台可以正常构建。

Windows 原生没有 Perl

因此 Qt 官方推荐使用:

Strawberry Perl ------ Windows 上最标准、最兼容的 Perl 版本

原因包括:

  • 完全开源
  • 支持 GCC/MSVC 工具链
  • 带 dmake/nmake 等构建工具
  • 兼容 Qt 的 Perl 脚本

Qt 官方文档明确写明:

Building Qt from source on Windows requires a Perl installation (Strawberry Perl is recommended).


Strawberry Perl 安装指南

下载地址(官方)

进入 Strawberry Perl 官网

复制代码
https://strawberryperl.com

选择:

  • 64-bit
  • 最新版 Perl

例如:

复制代码
strawberry-perl-5.32.1.1-64bit.msi

安装步骤

一路 Next 即可,记得勾选:

✔ Add to PATH

✔ Enable tools

安装后命令行可以执行:

复制代码
perl -v

即可开始构建 Qt。


如何验证 Qt 是否检测到 Perl?

打开 Qt 环境控制台(Qt Command Prompt):

复制代码
perl -v
qmake --version

如果能够正常执行,说明 Perl 生效。


常见问题排查

1.qmake 报错找不到 Perl

错误信息一般为:

复制代码
Perl is required to build WebKit

✔ 解决:安装 Strawberry Perl 后重新执行 qmakeconfigure


2.qmake + MSVC 无法执行 Perl 脚本

可能因为 PATH 顺序问题。

解决方法:

在系统环境变量中将:

复制代码
C:\Strawberry\perl\bin

移动到靠前位置。



总结

内容 说明
qmake 是 Qt 的构建系统 解析 .pro 文件,生成 Makefile/VS 工程
qmake 本身不需要 Perl 但 Qt 的构建工具链部分依赖 Perl
Windows 需安装 Strawberry Perl Linux/macOS 则无需
Perl 用于 Qt WebKit、自动生成器、源码构建 特别是在编译 Qt 源码时必需

因此,在 Windows 上编译 Qt 或使用 Qt 的部分模块时:

必须安装 Strawberry Perl 才能保证 Qt 构建系统完整运行。


相关推荐
喵个咪2 小时前
Qt6 QML 实现DateTimePicker组件
前端·qt
lsx2024062 小时前
Vue.js 过渡 & 动画
开发语言
wjs20242 小时前
NumPy 位运算
开发语言
ZHE|张恒2 小时前
设计模式(二)工厂方法模式 — 把创建权限下放给子类,像“可扩展的生产线”
java·开发语言·设计模式
报错小能手3 小时前
C++笔记 bind函数模板
开发语言·c++·笔记
2501_941111523 小时前
C++中的适配器模式
开发语言·c++·算法
2501_941111943 小时前
C++中的适配器模式变体
开发语言·c++·算法
zzz海羊3 小时前
VSCode配置java中的lombok
java·开发语言·vscode