The Eclipse Zenoh: Zero Overhead Pub/Sub, Store/Query und Compute.
Zenoh (ausgesprochen /zeno/ ) vereint Daten in Bewegung, Daten im Ruhezustand und Berechnungen. Es verbindet sorgfältig traditionelles Pub/Sub mit geografisch verteilten Speichern, Abfragen und Berechnungen und behält dabei ein Maß an Zeit- und Platzeffizienz bei, das weit über dem der Mainstream-Stacks liegt.
Weitere Informationen finden Sie auf der Website zenoh.io und in der Roadmap.
Die Zenoh C++ API sind nur Header-C++-Bindungen für die Bibliotheken zenoh-c und zenoh-pico.
C++-Bindungen befinden sich noch in der aktiven Entwicklung, daher wird sich das Zenoh-Team über jede Hilfe beim Testen auf verschiedenen Plattformen, Systemarchitekturen usw. sehr freuen und alle Probleme melden, auf die Sie stoßen könnten. Dies wird dazu beitragen, seine Reife und Robustheit erheblich zu verbessern.
Die einzige zwingende Voraussetzung zum Erstellen der Bibliothek ist ein C++17-kompatibler Compiler. Für die Verwendung der Bibliothek muss entweder zenoh-c oder zenoh-pico installiert sein.
⚠️ WARNUNG⚠️ : Zenoh und sein Ökosystem befinden sich in aktiver Entwicklung. Wenn Sie aus Git erstellen, stellen Sie sicher, dass Sie auch jedes andere Zenoh-Repository, das Sie verwenden möchten (z. B. Bindung, Plugin, Backend usw.), aus Git erstellen. Es kann vorkommen, dass einige Änderungen in Git nicht mit der neuesten gepackten Zenoh-Version kompatibel sind (z. B. Deb, Docker, Pip). Wir legen besonderen Wert darauf, die Kompatibilität zwischen den verschiedenen Git-Repositories im Zenoh-Projekt aufrechtzuerhalten.
Um zenoh-cpp zu installieren, führen Sie die folgenden Schritte aus:
Klonen Sie die Quellen.
Git-Klon https://github.com/eclipse-zenoh/zenoh-cpp.git
Erstellen und installieren.
Standardmäßig wird erwartet, dass Sie zenoh-c installiert haben. Wenn Sie für das zenoh-pico-Backend oder für beide installieren möchten (oder kein Backend angeben möchten), setzen Sie bitte die Cmake-Variablen ZENOHCXX_ZENOHC
oder ZENOHCXX_ZENOHPICO
entsprechend auf ON
oder OFF
. Beachten Sie, dass mindestens eines der Backends für die Nutzung der Bibliothek und/oder die Erstellung von Tests und Beispielen erforderlich ist.
Verwenden Sie die Option CMAKE_INSTALL_PREFIX
, um den Installationsort anzugeben. Ohne diesen Parameter wird die Installation am Standardsystemstandort /usr/local
durchgeführt, wofür Root-Rechte erforderlich sind.
mkdir build && cd build cmake .. -DCMAKE_INSTALL_PREFIX=~/.local # nur für zenoh-c backendcmake konfigurieren .. -DZENOHCXX_ZENOHC=OFF -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # nur für zenoh-pico backendcmake konfigurieren .. -DZENOHCXX_ZENOHC= AUS -DZENOHCXX_ZENOHPICO=OFF -DCMAKE_INSTALL_PREFIX=~/.local # zum Konfigurieren für keines der Backendscmake .. -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # zum Konfigurieren für beide Backendscmake --install .
Standardmäßig wird erwartet, dass Sie zenoh-c installiert haben. Wenn Sie Tests für das Zenoh-Pico-Backend oder für beide erstellen und ausführen möchten, setzen Sie bitte die Cmake-Variablen ZENOHCXX_ZENOHC
oder ZENOHCXX_ZENOHPICO
entsprechend auf ON
oder OFF
.
Um Tests zu erstellen, führen Sie Folgendes aus:
mkdir build && cd build cmake .. -DCMAKE_INSTALL_PREFIX=~/.local # zum Erstellen von Tests nur für das Zenoh-C-Backendcmake .. -DZENOHCXX_ZENOHC=OFF -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # zum Erstellen von Tests nur für das Zenoh-Pico-Backendcmake .. - DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # zum Erstellen von Tests für beide Backendscmake --build . --target-Tests ctest
Beachten Sie, dass die Ausgabe von cmake ../zenoh-cpp
zeigt, wo zenoh-c und/oder zenoh-pico die Abhängigkeiten gefunden wurden.
Beispiele sind in zwei Unterverzeichnisse aufgeteilt. Das Unterverzeichnis universal
enthält zenoh-cpp-Beispiele, die sowohl mit zenoh-c- als auch mit zenoh-pico-Backends erstellt werden können. Das Unterverzeichnis zenohc
enthält Beispiele mit zenoh-c-spezifischer Funktionalität.
Standardmäßig wird erwartet, dass Sie zenoh-c installiert haben. Wenn Sie Beispiele für das Zenoh-Pico-Backend oder für beide erstellen möchten, setzen Sie bitte die Cmake-Variablen ZENOHCXX_ZENOHC
oder ZENOHCXX_ZENOHPICO
entsprechend auf ON
oder OFF
.
Um Beispiele zu erstellen, führen Sie Folgendes aus:
cmake .. -DCMAKE_INSTALL_PREFIX=~/.local # zum Erstellen von Beispielen nur für das Zenoh-C-Backendcmake .. -DZENOHCXX_ZENOHC=OFF -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # zum Erstellen von Beispielen nur für das Zenoh-Pico-Backendcmake .. - DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # zum Erstellen von Beispielen für beide Backendscmake --build . --target-Beispiele
Beispiele werden in den Verzeichnissen build/examples/zenohc
und build/examples/zenohpico
abgelegt.
Ändern Sie das aktuelle Verzeichnis in die gewünschte Variante ( examples/zenohc
oder examples/zenohpico
im Build-Verzeichnis).
Siehe Beispielquellen für Befehlszeilenargumente (Schlüsselausdruck, Wert, Routeradresse).
zenohc
-Beispiele können eigenständig funktionieren, für zenohpico
-Beispiele ist jedoch der funktionierende Zenoh-Router erforderlich. Um also zenohpico
Beispiele auszuführen, laden Sie das Zenoh-Projekt herunter und führen Sie den Router aus (Rust sollte installiert sein):
Git-Klon https://github.com/eclipse-zenoh/zenohcd zenoh Frachtfahrt
./z_sub
./z_pub
Der z_pub
sollte die von z_sub
gesendete Nachricht empfangen.
./z_queryable
./z_get
Das z_get
sollte die Daten von z_queryable
erhalten.
./z_sub_thr_cpp
./z_pub_thr_cpp 1024
Nach einer Verzögerung von 30–40 Sekunden beginnt z_sub_thr
mit der Anzeige der Ergebnisse der Durchsatzmessung.
Nachfolgend finden Sie die Schritte zum Einbinden von zenoh-cpp in das CMake-Projekt. Siehe auch das Verzeichnis „examples/simple“ für kurze Beispiele von CMakeLists.txt.
Fügen Sie zenoh-c oder zenoh-pico in Ihr CMake-Projekt ein, bevor Sie von zenoh-cpp selbst abhängig werden. Dies ist wichtig, da die von Ihnen benötigten Bibliotheksziele ( zenohcxx::zenohpico
, zenohcxx::zenohc::lib
) nur definiert sind, wenn ihre Backend-Bibliotheksziele ( zenohpico::lib
und/oder zenohc::lib
definiert sind)
zenoh-cpp mit der CMake-Funktion find_package einbinden:
find_package(zenohc) #if using zenoh-c backend find_package(zenohpico) #if using zenoh-pico backend find_package(zenohcxx)
Fügen Sie Ihrem Projekt eine Abhängigkeit von zenoh-cpp hinzu:
target_link_libraries(yourproject PUBLIC zenohcxx::zenohc) #if using zenoh-c backend target_link_libraries(yourproject PUBLIC zenohcxx::zenohpico) #if using zenoh-pico backend
Fügen Sie den zenoh.hxx-Header hinzu. Die gesamte zenoh-Funktionalität ist unter dem Namensraum zenoh
verfügbar:
#include „zenoh.hxx“ unter Verwendung des Namensraums zenoh;
Die Dokumentation befindet sich auf zenoh-cpp.readthedocs.io. Eine Anleitung zum lokalen Erstellen der Dokumentation finden Sie unter docs/README.md.