C++20 foundation libraries for PlotJuggler.
| Module | Description | Dependencies | License |
|---|---|---|---|
| pj_base | Vocabulary types: Timestamp, DatasetId, TopicId, type trees, Expected<T>, Span<T> |
None | Apache-2.0 |
| pj_plugins | C-ABI plugin protocol (DataSource, MessageParser, Dialog, Toolbox families), C++ SDK base classes, plugin discovery, host-side loaders, and config helpers | pj_base, nlohmann/json | Apache-2.0 |
| cmake/ | Plugin-authoring CMake helpers shipped with plugin_sdk: pj_configure_plugin() (symbol isolation, export allowlist + gate, manifest validation/sidecar/embed), pj_embed_file(), pj_harden_plugin_exports(), pj_add_parser_module() — see examples/sdk_consumer |
— | Apache-2.0 |
Prerequisites: C++20 compiler (GCC 11+), Conan 2, CMake 3.22+.
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 22
sudo apt install clangd-22 clang-format-22 clang-tidy-22git clone <this repo>
cd plotjuggler_sdk
./build.sh # RelWithDebInfo (build/)
./build.sh --debug # Debug + ASAN (build/debug_asan)
./test.sh # runs tests in all discovered build dirs
./run_clang_tidy.sh # clang-tidy via clangd-22pj_base/ Vocabulary types (zero deps)
pj_plugins/ C-ABI plugin protocol, SDK, host loaders
cmake/ Installed CMake helpers for plugin authors (PjPlugin.cmake, PjParserModule.cmake)
examples/sdk_consumer/ find_package() consumer exercising the helpers (built by the release + conda checks)
docs/ Project-wide design guides
PlotJuggler SDK is Apache-2.0 (LICENSE-APACHE); each
source file carries an authoritative SPDX-License-Identifier header. You may
build proprietary plugins and applications on the SDK without restriction;
Apache-2.0 also grants an explicit patent license.
The columnar storage engine (formerly the MPL-2.0 pj_datastore module) has
moved to the PlotJuggler application repo; plugins load through a stable C ABI
and never link it. See LICENSE for the full mapping.