LINUX-ROS集成安装MQTT库步骤&&注意事项

2023-12-14 04:58:10

环境信息

root@titan-ubuntu1:/home/mogo/data/jp/paho.mqtt.cpp# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: ? ?Ubuntu 18.04.5 LTS
Release: ? ? ? ?18.04
Codename: ? ? ? bionic

步骤

安装doxygen

sudo apt install doxygen

构建 Paho C 库

在构建 C++ 库之前,首先构建并安装 Paho C 库(如果尚未存在)。请注意,此版本的 C++ 库需要 Paho C v1.3.13 或更高版本。

从 C++ v1.3.0 开始,Paho C 库的推荐版本作为子模块包含在存储库中。这可以与 C++ 库同时构建,从而简化了包的整体构建。

但是,如果您想手动构建 Paho C 库,可以按如下方式完成:

<span style="color:#1f2328"><span style="background-color:#ffffff"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>$ git clone https://github.com/eclipse/paho.mqtt.c.git
$ cd paho.mqtt.c
$ git checkout v1.3.13

$ cmake -Bbuild -H. -DPAHO_ENABLE_TESTING=OFF -DPAHO_BUILD_STATIC=ON \
    -DPAHO_WITH_SSL=ON -DPAHO_HIGH_PERFORMANCE=ON
$ sudo cmake --build build/ --target install
$ sudo ldconfig
</code></span></span></span></span>

这将构建启用 SSL/TLS 的 C 库。如果不需要,请省略-DPAHO_WITH_SSL=ON.

它还使用 C 库的“高性能”选项来禁用更广泛的内部存储器检查。删除PAHO_HIGH_PERFORMANCE选项(即关闭它)以调试内存问题,但对于大多数生产系统,将其保留以获得更好的性能。

上面的代码会将库安装到主机上的默认位置,对于 Linux,通常是/usr/local.?要将库安装到非标准位置,请使用CMAKE_INSTALL_PREFIX指定位置。例如,要安装到用户主目录下的目录中(也许是为了本地测试),请执行以下操作:

<span style="color:#1f2328"><span style="background-color:#ffffff"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>$ cmake -Bbuild -H. -DPAHO_ENABLE_TESTING=OFF -DPAHO_BUILD_STATIC=ON \
    -DPAHO_WITH_SSL=ON -DPAHO_HIGH_PERFORMANCE=ON \
    -DCMAKE_INSTALL_PREFIX=$HOME/install</code></span></span></span></span>
构建 Paho C++ 库

PAHO_WITH_MQTT_C如果尚未安装 Paho C 库,则可以使用打开的CMake 选项一步构建推荐的版本以及 C++ 库。

<span style="color:#1f2328"><span style="background-color:#ffffff"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>$ git clone https://github.com/eclipse/paho.mqtt.cpp
$ cd paho.mqtt.cpp

$ cmake -Bbuild -H. -DPAHO_WITH_MQTT_C=ON -DPAHO_BUILD_STATIC=ON \
    -DPAHO_BUILD_DOCUMENTATION=ON -DPAHO_BUILD_SAMPLES=ON
$ sudo cmake --build build/ --target install
$ sudo ldconfig
</code></span></span></span></span>

如果构建主机上有最新版本的 Paho C 库,并且已安装到默认位置,则无需再次构建。省略该PAHO_WITH_MQTT_C选项:

<span style="color:#1f2328"><span style="background-color:#ffffff"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>$ cmake -Bbuild -H. -DPAHO_BUILD_STATIC=ON \
    -DPAHO_BUILD_DOCUMENTATION=ON -DPAHO_BUILD_SAMPLES=ON
</code></span></span></span></span>

如果 Paho C 库安装到非默认位置,或者您想要针对不同版本进行构建,请使用CMAKE_PREFIX_PATH指定其安装位置。也许是这样的:

<span style="color:#1f2328"><span style="background-color:#ffffff"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>$ cmake -Bbuild -H. -DPAHO_BUILD_STATIC=ON \
    -DPAHO_BUILD_DOCUMENTATION=ON -DPAHO_BUILD_SAMPLES=ON \
    -DCMAKE_PREFIX_PATH=$HOME/install
</code></span></span></span></span>
构建 Debian/Ubuntu 软件包

.deb可以按如下方式创建Debian/Ubuntu 安装文件:

<span style="color:#1f2328"><span style="background-color:#ffffff"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>$ cmake -Bbuild -H. -DPAHO_WITH_SSL=ON -DPAHO_ENABLE_TESTING=OFF -DPAHO_BUILD_DEB_PACKAGE=ON
$ cmake --build build
$ (cd build && cpack)</code></span></span></span></span>

支持的网络协议

该库支持使用 TCP、SSL/TLS 和 Websockets(安全和不安全)连接到 MQTT 服务器/代理。这是通过提供给 connect() 调用的 URI 选择的。可以指定为:

<span style="color:#1f2328"><span style="background-color:#ffffff"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>"mqtt://<host>:<port>"   - TCP, unsecure
 "tcp://<host>:<port>"    (same)

"mqtts://<host>:<port>"  - SSL/TLS
 "ssl://<host>:<port>"     (same)

"ws://<host>:<port>"    - Unsecure websockets
"wss://<host>:<port>"   - Secure websockets
</code></span></span></span></span>

“mqtt://”和“tcp://”架构是相同的。它们表明 TCP 上的连接不安全。“mqtt://”变体对于库来说是新的,但在不同的 MQTT 库中变得越来越常见。

同样,“mqtts://”和“ssl://”架构是相同的。它们指定通过 SSL/TLS 套接字的安全连接。

请注意,要使用任何安全连接选项“mqtts://”、“ssl://”或“wss://”,您必须使用 CMake 选项编译库PAHO_WITH_SSL=ON以包含 OpenSSL。此外,您必须指定ssl_options当您连接到代理时,即您必须在调用时添加ssl_options一个connect_options实例connect()

Catch2单元测试

单元测试使用Catch2作为测试框架。支持版本 2.x 和 3.x。

Catch2可以在这里找到:Catch2

例子

示例应用程序可以在src/samples的源存储库中找到:?https://github.com/eclipse/paho.mqtt.cpp/tree/master/src/samples

这是典型示例的部分示例:

int main(int argc, char* argv[])
{
    sample_mem_persistence persist;
    mqtt::client cli(ADDRESS, CLIENT_ID, &persist);

    callback cb;
    cli.set_callback(cb);

    auto connOpts = mqtt::connect_options_builder() 
        .keep_alive_interval(20);
        .clean_session()
        .finalize();

    try {
        cli.connect(connOpts);

        // First use a message pointer.

        mqtt::message_ptr pubmsg = mqtt::make_message(PAYLOAD1);
        pubmsg->set_qos(QOS);
        cli.publish(TOPIC, pubmsg);

        // Now try with itemized publish.

        cli.publish(TOPIC, PAYLOAD2, strlen(PAYLOAD2)+1, 0, false);

        // Disconnect

        cli.disconnect();
    }
    catch (const mqtt::persistence_exception& exc) {
        cerr << "Persistence Error: " << exc.what() << " ["
            << exc.get_reason_code() << "]" << endl;
        return 1;
    }
    catch (const mqtt::exception& exc) {
        cerr << "Error: " << exc.what() << " ["
            << exc.get_reason_code() << "]" << endl;
        return 1;
    }

    return 0;
}

这段代码需要:

Ian Craggs 等人的 Paho C 库。?GitHub - eclipse/paho.mqtt.c: An Eclipse Paho C client library for MQTT for Windows, Linux and MacOS. API documentation: https://eclipse.github.io/paho.mqtt.c/

如何确认包名?

???????

根据您提供的安装输出信息,可以看出这是Paho MQTT C++库的安装过程。在这个输出中,包名是"PahoMqttCpp"。

这些安装文件是CMake相关的文件,用于在CMake项目中使用Paho MQTT C++库。其中包括:

  • PahoMqttCppTargets.cmake:包含Paho MQTT C++库的构建目标信息,用于在CMake项目中链接和使用该库。
  • PahoMqttCppTargets-noconfig.cmake:类似于上述文件,但不包含配置信息。
  • PahoMqttCppConfig.cmake:包含Paho MQTT C++库的配置信息,用于在CMake项目中找到和使用该库。
  • FindPahoMqttC.cmake:用于在CMake项目中查找和配置Paho MQTT C库的CMake模块文件。
  • PahoMqttCppConfigVersion.cmake:包含Paho MQTT C++库的版本信息。

这些文件的安装路径为/usr/local/lib/cmake/PahoMqttCpp/,其中PahoMqttCpp就是Paho MQTT C++库的包名。

请注意,这些文件是用于CMake项目的配置文件,并不直接对应于库的头文件或二进制文件。要在C++项目中使用Paho MQTT C++库,您需要在CMakeLists.txt文件中使用find_package命令来查找和链接Paho MQTT C++库,并在源代码中包含相应的头文件。

文章来源:https://blog.csdn.net/John_ToStr/article/details/134904836
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。