環境信息
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);// Disconnectcli.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++庫,并在源代碼中包含相應的頭文件。