工作需要用到MQTT协议,网上搜了下发现有现成的QT下的MQTT实现,于是乎找代码、编译、碰壁、找教程、碰壁。。。折腾一圈,记录下编译使用过程。
一、系统环境及准备
Win10、vs2017社区版、QT5.12.4,github上有很多分支代码,下载时选择与QT对应的https://github.com/qt/qtmqtt/tree/5.12.4,把代码下载的一个文件夹下面(网上有人说路径不能有空格和中文,未测试真假,为节省时间还是选择放到不含中文和空格的路径下)
二、开工
1、在代码文件夹下创建一个build文件夹(这个名字是自己起的),也可以不要,为了把输出内容放到这,我创建了。
2、执行Qt 5.12.4 (MSVC 2017 32-bit)进入命令行。
3、切换到C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build执行vcvars32.bat
4、切换到代码目录下刚创建的build
5、执行qmake ../
6、执行nmake all
然后就开始编译,结果报错
观察错误内容,没有找个头文件,这时在build文件下会生成一堆文件,其中有个include文件夹,我们需要在这个文件夹下放对应的头文件就行,把C:\qtmqtt\src\mqtt下的对应头文件拷贝到C:\qtmqtt\build\include\QtMqtt下,继续编译,继续出现错误。。。最后拷贝过去对应的文件夹内容是下面图中内容。
private文件夹下存放带_p的头文件
上面拷贝完毕后再次运行nmake all 就可以了。
7、执行nmake install,把生成的模块安装到QT里,这样在项目中可以直接使用了。
8、执行nmake docs生成qtmqtt文档
9、执行nmake install_docs安装文档
10、执行nmake sub-examples-install_subtargets,生成使用示例,这样就可以在QT里直接打开示例代码。
11、把C:\qtmqtt\build\include\QtMqtt文件夹拷贝到C:\Qt\Qt5.12.4\5.12.4\msvc2017\include下面。打开示例代码就可以了。