build mqtt client

原文链接

下载OPENSSL
CMake GUI (cmake.org)

安装OpenSSL

下载32位版本:Win32 OpenSSL v1.1.1
这里下载

编译Paho C客户端

2.1 在paho.mqtt.c-master目录下新建build目录
2.2 运行cmake-gui
2.3 source code目录选择paho.mqtt.c-master目录,build目录选择C:\brixbot\paho.mqtt.c-master/build目录。
2.4 点击Configure按钮,在弹出的对话框中选择你要生成工程文件的Visual Studio版本。在本文中选择的是Visual Studio 14 2015 Win64。

20190418_185524.png

2.5 点击Finish按钮关闭上面的对话框。此时,cmake-gui会出现可设置的编译选项。按照下图进行设置。

20190418_185622.png

2.6 点击Configure按钮,此时会 弹出“Error in configuration process, project files may be invalid”的出错对话框。这是因为我们在刚刚的设置中要求把SSL支持编译进去,但SSL相关编译选项还未设置的原因。点Ok按钮关闭错误对话框。此时在编译选项列表中会多出SSL相关项目。按照下图进行设置:

20190418_185630.png

2.7 设置好后再次点击Configure按钮。这时输出框中应该再没有红色的错误信息。

20190418_185651.png

2.8 点击Generate按钮去生成Visual Studio的工程文件。这时,Open Project按钮应该变为允许状态。
2.9 点击Open Project按钮去打开Visual Studio 2015的工程。打开的工程应该包含下图所示项目:

20190418_185702.png

完全编译ALL_BUILD工程。如果没有错误,编译INSTALL工程。编译成功后会在 C:\Program Files (x86)\Eclipse Paho C\ 目录下面生成所有文件

mqtt3a结尾的为异步版本
mqtt3as结尾的为支持SSL的异步版本
mqtt3c结尾的为同步版本
mqtt3cs结尾的为支持SSL的同步版本

编译 c++ 客户端

github

在paho.mqtt.cpp-master目录下新建build目录
运行cmake-gui
source code目录选择paho.mqtt.cpp-master目录,build目录选择C:\brixbot\paho.mqtt.cpp-master/build目录。
点击Configure按钮,在弹出的对话框中选择你要生成工程文件的Visual Studio版本。在本文中选择的是Visual Studio 14 2015 x86
20190418_190410.png

点击Finish按钮关闭上面的对话框此时,cmake-gui会弹出“Error in configuration process, project files may be invalid”的出错对话框。这是因为我们还未告诉CMake哪里去找Paho C的库文件。点击OK关闭对话框后cmake-gui会可设置的编译选项。按照下图进行设置。PAHO_MQTT_C_LIB选择上一讲编译出来的paho-mqtt3as.lib库文件已确保我们编译出来的Paho C++库也支持SSL。
20190418_190419.png

点击Configure按钮后cmake-gui会更新编译选项列表并列出和SSL相关的选项。检查SSL相关选项的文件名和路径是否正确。
20190418_190444.png
再次点击Configure按钮。这时输出框中应该没有红色的错误信息。

20190418_190458.png

点击Generate按钮去生成Visual Studio的工程文件。这时,Open Project按钮应该变为允许状态。

1.9 点击Open Project按钮去打开Visual Studio 2015的工程。打开的工程应该包含下图所示项目:

20190418_190624.png

1.10 和上一讲介绍的一样,我们需要修改所有工程的字符集选项为Use Unicode Character Set

使用问题

1>d:\library\include\mqtt\thread_queue.h(79): warning C4003: not enough actual parameters for macro ‘max’
1>d:\library\include\mqtt\thread_queue.h(79): error C2589: ‘(‘: illegal token on right side of ‘::’

解决方法:
Your problem is caused by the <Windows.h> header file that includes macro definitions named max and min

添加个() 防止宏展开
size_t maxValue_ = (std::numeric_limits::max)()
//

You need to link with both the Paho C (libpaho-mqtt3as.so) and the Paho C++ (libpaho-mqttpp3.so). It looks like maybe you remembered the C library but forgot the C++ one?
Try adding “-lpaho-mqttpp3” to the compile/link line.