Windows编译QtMqtt-5.12.1

前言

mqtt协议主要是用于物联网,机器对机器,网络开销要求小的环境。原理是一个publisher(发布者)发布一个topic(主题),然后发送payload(有效负载,即消息内容),然后经过一个中间broker(服务器),另外一个subscriber(订阅者)订阅这个主题,然后发送者发送的消息,这个订阅者就可以接收到了。当然前提是这两个都需要先连接服务器,所以这两个可以理解为都是客户端,只是角色不同。发布者同时也可以是订阅者。原理简单理解之后就是编程了(其实就是找库使用)。这里我们客户端采用Qt的mqtt,服务器采用EMQTT。由于我安装的Qt5.12.1里面没有mqtt模块所以需要自己去github上下载对应的源码,然后编译。而服务器则可以直接在github上下载编译好的程序直接运行,这个后续介绍。

编译

mingw64版

打开git-bash,进入mqtt的源码根目录,执行/QtPath/mingw64__730/bin/qmake(生成Makefile),然后执行/QtPath/Tools/mingw64____730/bin/mingw32-make(编译),中间会有错误:找不到<QtMqtt/….>这样的头文件,这里在mingw64的include目录里面新建QtMqtt目录,然后把下载的源码里面的.h文件全部拷贝到新建的QtMqtt目录。然后重新编译。编译完成之后执行mingw32-make install,就会把bin和lib都拷贝到Qt对应的目录。

msvc64版

打开vs2017的64位命令框,进入mqtt的源码根目录,执行/QtPath/msvc2017__64/bin/qmake(生成Makefile),然后执行nmake(编译,因为使用的vs2017的命令框,所以nmake在环境变量里面,可以直接运行),中间会有错误:找不到<QtMqtt/….>这样的头文件,这里在msvc2017____64的include目录里面新建QtMqtt目录,然后把下载的源码里面的.h文件全部拷贝到新建的QtMqtt目录。然后重新编译。编译完成之后执行nmake install,就会把bin和lib都拷贝到Qt对应的目录。

这里需要注意qmake和make的搭配,在Windows上qt安装之后mingw编译器会有对应的make工具,那就是mingw32-make,而msvc编译器则是nmake。所以在Windows上编译东西不要盲目的使用make,这里直接使用make编译会提示Makefile的语法错误。Linux则没有这些区别。

使用

在pro文件里面添加 Qt += mqtt即可

搭建服务器

解压下载的windows版的压缩包,进入bin目录,执行empx.cmd start启动服务器。然后在网页上访问127.0.0.1:18083就可以通过web直接管理服务器,查看服务器的运行状态。访问需要账户密码,默认账户是admin,密码public。界面如下:

点击Listeners,这里面就是服务器提供的服务和对应的端口号,客户端采用不同的协议,按图使用不同的端口即可。界面如下:

测试

测试客户端采用Qt的mqtt里面的例子,截图如下。


Windows编译QtMqtt-5.12.1
http://yoursite.com/2019/08/01/Windows编译QtMqtt-5-12-1/
作者
还在输入
发布于
2019年8月1日
许可协议