0

对于使用 MQTT 的项目,我总是必须从源代码编译 QtMqtt 模块,因为它不包含在预构建的 Windows 版本中,也无法选择安装。在 Qt5 中这很容易:从官方 git ( https://code.qt.io/cgit/qt/qtmqtt.git/ ) 下载源代码,在 QtCreator 中打开 .pro 文件并编译项目。对于安装,我只是将 .dll 文件移动到我的 Qt 安装目录。

现在在 Qt6 中,构建过程从 qmake 切换到了 cmake,所以我不能简单地在 QtCreator 中加载项目,而必须使用 CMake 手动编译它,我觉得这非常不直观且容易出错。据我了解,从现在开始我不能自己编译单个模块,而是必须获取整个 Qt 6.2.0 源代码(即通过安装程序选项),然后使用--targetCMake 上的选项来仅构建特定模块。所以这是我到目前为止所做的:

  1. 从安装程序获取 Qt 源代码(安装到Qt/6.2.0/Src
  2. 根据本手册创建命令行环境
  3. 打开cmd环境,导航到build文件夹(即Qt/6.2.0/build
  4. 使用命令配置构建:..\Src\configure -prefix Qt\6.2.0\build
  5. 使用命令使用 cmake 构建cmake --build . --target qtmqtt
  6. 使用命令安装cmake --install .

会发生什么,配置有效,并且构建也应该有效,但是安装失败,如下所示:

CMake Error at qtbase/src/3rdparty/libpng/cmake_install.cmake:41 (file):
  file INSTALL cannot find
  "F:/DEV/prog/Qt/6.2.0/build/qtbase/mkspecs/modules/qt_ext_libpng.pri": File
  exists.
Call Stack (most recent call first):
  qtbase/src/3rdparty/cmake_install.cmake:42 (include)
  qtbase/src/cmake_install.cmake:42 (include)
  qtbase/cmake_install.cmake:244 (include)
  cmake_install.cmake:42 (include)

然后该文件夹Qt/6.2.0/build仅包含 .cmake 文件,但对我来说似乎没有任何可用的 .dll 文件。我只是不明白如何使用 cmake 正确设置所有内容。既然在 Qt5 中用 qmake 编译模块相当容易,为什么他们现在要把它弄得这么复杂呢?

4

2 回答 2

0

尝试替换cmake --install .cmake --install qtmqtt

于 2021-11-13T01:09:58.337 回答
0

据我了解,从现在开始我不能自己编译单个模块,而是必须获取整个 Qt 6.2.0 源代码(即通过安装程序选项)

这是不正确的。给定一个预构建的 Qt,您应该仍然可以通过运行例如从源代码构建 qmqtt 包

<QTDIR>\bin\qt-configure-module <mqtt_src_dir>
cmake --build .
于 2022-01-06T14:23:23.950 回答