第一次使用qt6,之前都是用qmake,qt6之后开始使用cmake,这里也学习一下cmake,
编译qtmqtt源码有两种方法。
方法一:命令行编译
1.下载qtmqtt源码
放在这个路径下
2.创建build文件夹,存放产生的编译文件
3.进入到创建的build目录
在命令行输入 cd C:\Users\50678\Downloads\qtmqtt-build 进入到构建目录
C:\Qt6\6.3.1\mingw_64\bin\qt-configure-module.bat C:\Users\50678\Downloads\qtmqtt
用qt自带的qt-configure-module.bat构建qtmqtt模块,后面跟源码路径,即我们第一步创建的源码目录。
回车。
这里可能会报错,找不到cmake,找不到najin,没有指定cxx编译器之类的,所有原因都是环境变量没配好。
如图所示,配置cmake环境,ninja环境,MinW环境(gcc,g++),perl环境,再后面的4行是cmd.exe的环境。因为我一小心误删了系统的环境变量,这些都是遇到错误一个个加的。
4,使用cmake构建
cmake --build .
cmake --install . --verbose 安装编译好的mqtt模块,其实就是把编译出的文件打包,便于复制到qt路径中使用。
可能会提示没有权限,以管理员身份运行命令提示符就好了。
我第一次安装它是安装在了C盘program file下面,又运行了一次,直接写到了qt下面,真不错,琢磨一下cmake应该可以找到的。
接下来就能正常使用mqtt了。运行一下示例程序。
成功订阅到消息!
方法二:使用QT Creater构建
1,打开qtmqtt项目
刚打开可能会报错,打开好像直接执行cmake了吧,提示perl不可用,配置完环境变量即可,参考方法1,不过这里是在qt creater中配置,如果你的path里面没有的话
然后再执行cmake就不后报错了。
cmake成功后,直接构建
非常顺利,构建成功,下一步就是打开构建目录,把构建好的库文件之类的复制到qt目录下,即方法1的最后一步,注意这里手动复制一定不要漏文件。
下一步就是编译安卓平台的mqtt,过程都是一样的,换个编译器而已。
安卓里面有个坑。
qt.toolchain.cmake 中存放的Android sdk路径要填写自己的
toolchain路径也要填自己的
修改qt.toolchain.cmake
set(__qt_initially_configured_toolchain_file "C:/Users/50678/AppData/Local/Android/Sdk/ndk/22.1.7171670/build/cmake/android.toolchain.cmake")
if (NOT DEFINED ANDROID_SDK_ROOT)
set(ANDROID_SDK_ROOT "C:/Users/50678/AppData/Local/Android/Sdk" CACHE STRING "")
endif()