This directory contains all project dependencies, organized by type.
deps/
├── CMakeLists.txt # Main dependencies build configuration
├── README.md # This file
├── third_party/ # Third-party open source dependencies
│ ├── CMakeLists.txt # Third-party dependencies build configuration (uses FetchContent)
│ └── README.md # Third-party dependencies documentation
└── cloudxr/ # CloudXR related files
The deps/third_party/CMakeLists.txt centrally manages all third-party dependencies using CMake FetchContent:
- OpenXR SDK: Automatically fetched and built as a static library
- yaml-cpp: Automatically fetched and built as a static library
- pybind11: Fetched only when
BUILD_PYTHON_BINDINGS=ON(header-only)- Makes
pybind11::moduletarget available to all Python binding modules
- Makes
Dependencies are automatically downloaded during CMake configuration. No manual initialization is required.
This centralized approach prevents duplicate includes and ensures consistent configuration across all modules.
The cloudxr/ folder contains files and configurations for deploying the NVIDIA CloudXR, it
uses Docker Compose to setup the entire system with 3 different containers:
- CloudXR runtime
- Web server that hosts the CloudXR Web XR app
- WebSocket SSL proxy
These are not fetched by CMake — they must be installed on the build
machine and are located via find_package.
- Locator:
find_package(Vulkan REQUIRED) - Required by:
viz/core/whenBUILD_VIZ=ON(alsoexamples/camera_streamer). - Linux:
apt-get install libvulkan-dev(provides headers +libvulkan.so.1). - Windows: install the LunarG Vulkan SDK and ensure
VULKAN_SDKenv var is set. CI useshumbletim/install-vulkan-sdk@v1.2. - Min version: 1.2 (Televiz checks
VK_API_VERSION_1_2at device select time). - License: Apache 2.0 (loader); per-vendor for ICD drivers.
- Locator:
find_package(CUDAToolkit REQUIRED) - Required by:
examples/camera_streamer/only today;vizadds CUDA dependency once CUDA-Vulkan interop lands; CI must have CUDA installed for GPU test runner to exercise these paths. - Min version: 12.0
- License: NVIDIA EULA
- Source: https://github.com/KhronosGroup/OpenXR-SDK.git
- Version: 75c53b6e853dc12c7b3c771edc9c9c841b15faaa (release-1.1.53)
- Purpose: OpenXR loader and headers for XR runtime interaction
- Build: Static library to avoid runtime dependencies
- License: Apache 2.0
- Source: https://github.com/jbeder/yaml-cpp.git
- Version: f7320141120f720aecc4c32be25586e7da9eb978 (0.8.0)
- Purpose: YAML parsing for plugin configuration files
- Build: Static library to avoid runtime dependencies
- License: MIT
- Source: https://github.com/pybind/pybind11.git
- Version: a2e59f0e7065404b44dfe92a28aca47ba1378dc4 (v2.11.0-182)
- Purpose: C++/Python bindings for Isaac Teleop Python API
- Build: Header-only library
- License: BSD-style
- Source: https://github.com/g-truc/glm.git
- Version: 1.0.1
- Purpose: Vulkan/GLSL math (
vec,mat,quat, slerp / lookAt / perspective) used by thevizmodule for view & projection composition, pose math, and world/head/lazy-locked layer placement. Fetched only whenBUILD_VIZ=ON. - Build: Header-only library
- License: MIT
When adding new third-party dependencies:
To add a new third-party dependency:
-
Update
CMakeLists.txtin this directory to add a FetchContent declaration:FetchContent_Declare( <name> GIT_REPOSITORY <repository-url> GIT_TAG <commit-sha-or-tag> ) FetchContent_MakeAvailable(<name>)
-
Document it in this README with purpose, license, version, and repository information
-
If you need to preserve a specific version, use the full commit SHA in GIT_TAG
-
Update the Build from Source doc with any new requirements