Eclipse Zenoh: 제로 오버헤드 게시/구독, 저장/쿼리 및 컴퓨팅.
Zenoh( /zeno/ 로 발음)는 이동 중인 데이터, 정지 중인 데이터 및 계산을 통합합니다. 이는 전통적인 게시/구독과 지리적으로 분산된 저장소, 쿼리 및 계산을 신중하게 혼합하는 동시에 주류 스택을 훨씬 뛰어넘는 수준의 시간 및 공간 효율성을 유지합니다.
자세한 내용은 zenoh.io 웹사이트와 로드맵을 확인하세요.
Zenoh C++ API는 zenoh-c 및 zenoh-pico 라이브러리에 대한 헤더 전용 C++ 바인딩입니다.
C++ 바인딩은 아직 활발하게 개발 중이므로 Zenoh 팀은 다양한 플랫폼, 시스템 아키텍처 등에서 바인딩을 테스트하고 발생할 수 있는 문제를 보고하는 데 도움을 주시면 감사하겠습니다. 이는 성숙도와 견고성을 크게 향상시키는 데 도움이 될 것입니다.
라이브러리를 구축하기 위한 유일한 엄격한 요구 사항은 C++17 호환 컴파일러입니다. 라이브러리를 사용하려면 zenoh-c 또는 zenoh-pico가 설치되어 있어야 합니다.
⚠️ 경고⚠️ : Zenoh와 생태계는 활발히 발전하고 있습니다. git에서 빌드할 때 사용하려는 다른 Zenoh 저장소(예: 바인딩, 플러그인, 백엔드 등)도 git에서 빌드해야 합니다. git의 일부 변경 사항이 최신 패키지 Zenoh 릴리스(예: deb, docker, pip)와 호환되지 않을 수 있습니다. 우리는 Zenoh 프로젝트의 다양한 Git 리포지토리 간의 호환성을 유지하기 위해 특별한 노력을 기울였습니다.
zenoh-cpp를 설치하려면 다음 단계를 수행하십시오.
소스를 복제합니다.
자식 클론 https://github.com/eclipse-zenoh/zenoh-cpp.git
빌드하고 설치합니다.
기본적으로 zenoh-c가 설치되어 있을 것으로 예상됩니다. zenoh-pico 백엔드 또는 둘 다를 설치하려면(또는 백엔드를 지정하지 않으려면) ZENOHCXX_ZENOHC
또는 ZENOHCXX_ZENOHPICO
Cmake 변수를 그에 따라 ON
또는 OFF
로 설정하세요. 라이브러리를 사용하거나 테스트 및 예제를 작성하려면 백엔드 중 하나 이상이 필요합니다.
설치 위치를 지정하려면 CMAKE_INSTALL_PREFIX
옵션을 사용하세요. 이 매개변수가 없으면 루트 권한이 필요한 기본 시스템 위치인 /usr/local
에 설치가 수행됩니다.
mkdir 빌드 && cd 빌드 cmake .. -DCMAKE_INSTALL_PREFIX=~/.local # zenoh-c backendcmake에만 구성하려면 .. -DZENOHCXX_ZENOHC=OFF -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # zenoh-pico backendcmake에만 구성하려면 .. -DZENOHCXX_ZENOHC= OFF -DZENOHCXX_ZENOHPICO=OFF -DCMAKE_INSTALL_PREFIX=~/.local # 백엔드 scmake에 대해 구성하지 않음 .. -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # 두 백엔드 scmake에 대해 구성 --install .
기본적으로 zenoh-c가 설치되어 있을 것으로 예상됩니다. zenoh-pico 백엔드 또는 둘 다에 대한 테스트를 빌드하고 실행하려면 ZENOHCXX_ZENOHC
또는 ZENOHCXX_ZENOHPICO
Cmake 변수를 그에 따라 ON
또는 OFF
로 설정하십시오.
테스트를 빌드하려면 다음을 실행하세요.
mkdir 빌드 && cd 빌드 cmake .. -DCMAKE_INSTALL_PREFIX=~/.local # zenoh-c backendcmake에 대해서만 테스트를 빌드하려면 .. -DZENOHCXX_ZENOHC=OFF -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # zenoh-pico backendcmake에 대해서만 테스트를 빌드하려면 .. - DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # 두 backendscmake --build 모두에 대한 테스트를 빌드합니다. --대상 테스트 ctest
cmake ../zenoh-cpp
의 출력에는 zenoh-c 및/또는 zenoh-pico 종속성이 발견된 위치가 표시됩니다.
예제는 두 개의 하위 디렉터리로 분할됩니다. 하위 디렉터리 universal
에는 zenoh-c 및 zenoh-pico 백엔드로 구축할 수 있는 zenoh-cpp 예제가 포함되어 있습니다. zenohc
하위 디렉터리에는 zenoh-c 특정 기능이 포함된 예제가 포함되어 있습니다.
기본적으로 zenoh-c가 설치되어 있을 것으로 예상됩니다. zenoh-pico 백엔드 또는 두 가지 모두에 대한 예제를 구축하려면 ZENOHCXX_ZENOHC
또는 ZENOHCXX_ZENOHPICO
Cmake 변수를 그에 따라 ON
또는 OFF
로 설정하세요.
예제를 빌드하려면 다음을 실행하세요.
cmake .. -DCMAKE_INSTALL_PREFIX=~/.local # zenoh-c backendcmake에 대해서만 예제를 빌드하려면 .. -DZENOHCXX_ZENOHC=OFF -DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # zenoh-pico backendcmake에 대해서만 예제를 빌드하려면 .. - DZENOHCXX_ZENOHPICO=ON -DCMAKE_INSTALL_PREFIX=~/.local # 두 backendscmake --build 모두에 대한 예제를 빌드합니다. --대상 예시
예제는 build/examples/zenohc
및 build/examples/zenohpico
디렉터리에 배치됩니다.
현재 디렉터리를 원하는 변형으로 변경합니다(빌드 디렉터리의 examples/zenohc
또는 examples/zenohpico
).
명령줄 인수(키 표현식, 값, 라우터 주소)에 대한 예제 소스를 참조하세요.
zenohc
예제는 독립형으로 작동할 수 있지만 zenohpico
예제의 경우 작동하는 zenoh 라우터가 필요합니다. 따라서 zenohpico
예제를 실행하려면 zenoh 프로젝트를 다운로드하고 라우터를 실행하십시오(Rust가 설치되어야 함):
자식 클론 https://github.com/eclipse-zenoh/zenohcd zenoh 화물 운송
./z_sub
./z_pub
z_pub
은 z_sub
가 보낸 메시지를 받아야 합니다.
./z_queryable
./z_get
z_get
은 z_queryable
에서 데이터를 받아야 합니다.
./z_sub_thr_cpp
./z_pub_thr_cpp 1024
30~40초 지연 후 z_sub_thr
은 처리량 측정 결과를 표시하기 시작합니다.
다음은 zenoh-cpp를 CMake 프로젝트에 포함시키는 단계입니다. CMakeLists.txt의 간단한 예는 example/simple 디렉터리도 참조하세요.
zenoh-cpp 자체에 의존하기 전에 zenoh-c 또는 zenoh-pico를 CMake 프로젝트에 포함하세요. 필요한 라이브러리 대상( zenohcxx::zenohpico
, zenohcxx::zenohc::lib
)은 백엔드 라이브러리 대상( zenohpico::lib
및/또는 zenohc::lib
가 정의된 경우)에만 정의되므로 이는 중요합니다.
find_package CMake 함수를 사용하여 zenoh-cpp를 포함합니다.
find_package(zenohc) #if using zenoh-c backend find_package(zenohpico) #if using zenoh-pico backend find_package(zenohcxx)
프로젝트에 zenoh-cpp에 대한 종속성을 추가합니다.
target_link_libraries(yourproject PUBLIC zenohcxx::zenohc) #if using zenoh-c backend target_link_libraries(yourproject PUBLIC zenohcxx::zenohpico) #if using zenoh-pico backend
zenoh.hxx 헤더를 포함합니다. 모든 zenoh 기능은 zenoh
네임스페이스에서 사용할 수 있습니다.
#include "zenoh.hxx"사용 네임스페이스 zenoh;
문서는 zenoh-cpp.readthedocs.io에 있습니다. 로컬에서 문서를 작성하는 방법에 대한 지침은 docs/README.md에 있습니다.