我想用 C++ 实现一个 MQTT 客户端功能(它需要是线程安全的,并且能够订阅主题和发布,但不需要代理功能)。
我正在考虑Eclipse 的Paho MQTT。 这是他们的下载页面。
我发现他们没有 MQTT5.0 支持。
然而,在他们的github 上:有一个 C++ 包装器,它在 1.1 版中声明了 MQTTv5.0 支持。
然后我发现了这个问题:Mosquitto vs eclipse paho client library,结论是:
将 libmosquitto 与libmosquittopp包装器一起使用
我检查了 libmosquittopp.h:所有函数都被标记为已弃用,所以我认为到目前为止它不是正确的方法。
为什么不推荐使用 libmosquittopp?因为
包装器是由外部请求产生的,在创建它时,没有其他适用于 MQTT 的 C++ 解决方案。这在过去几年中发生了变化,与真正的 C++ 库或使用纯 C libmosquitto 相比,此包装器没有任何好处。
那么,Paho 现在是否被认为是在 C++ 中使用 MQTT 的正确方向?
或者我只使用 Mosquitto 的纯 C 库?
或者,还有什么(除了从 0 开始写)?
我对 有点陌生CMake。所以这可能是一个菜鸟问题..
我正在尝试使用CMake. 我希望我的程序发布到 mqtt 代理。我在 Linux 上运行。
所以我https://github.com/eclipse/paho.mqtt.cpp通过做(并排)安装了相应的c项目
$ git clone https://github.com/eclipse/paho.mqtt.c.git
$ cd paho.mqtt.c
$ git checkout v1.3.1
$ cmake -Bbuild -H. -DPAHO_WITH_SSL=ON -DPAHO_ENABLE_TESTING=OFF
$ sudo cmake --build build/ --target install
$ sudo ldconfig
Run Code Online (Sandbox Code Playgroud)
按照文档然后做。
$ git clone https://github.com/eclipse/paho.mqtt.cpp
$ mkdir build
$ cd build
$ cmake ../
$ make
$ sudo make install
Run Code Online (Sandbox Code Playgroud)
一切都工作正常,没有任何错误。现在我应该在我自己的项目中放入我自己的 cmakelists 文件中什么,我可以使用这些库?所以我可以做。
#include "mqtt/async_client.h"
int main(int argc, char *argv[]){
std::cout << "Hello World!" << std::endl;
mqtt::async_client cli(DFLT_ADDRESS, …Run Code Online (Sandbox Code Playgroud)