对于使用 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 源代码(即通过安装程序选项),然后使用--target
CMake 上的选项来仅构建特定模块。所以这是我到目前为止所做的:
- 从安装程序获取 Qt 源代码(安装到
Qt/6.2.0/Src
) - 根据本手册创建命令行环境
- 打开cmd环境,导航到build文件夹(即
Qt/6.2.0/build
) - 使用命令配置构建:
..\Src\configure -prefix Qt\6.2.0\build
- 使用命令使用 cmake 构建
cmake --build . --target qtmqtt
- 使用命令安装
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 编译模块相当容易,为什么他们现在要把它弄得这么复杂呢?