KPN/docs/getting-started.md
Duncan Tourolle 6f384dc4b5
Some checks failed
📚 Docs / deploy (push) Failing after 7s
🧪 Test / test (push) Has been cancelled
Added callbacks for node errors and fifo overflow
Add new doc system which should/might deploy to pages.
2026-06-19 22:26:39 +02:00

1.7 KiB

Getting Started

Requirements

Dependency Version Notes
CMake ≥ 3.21
C++ compiler GCC ≥ 11, Clang ≥ 13 C++20 required
nanobind ≥ 2.1 auto-fetched; Python ≥ 3.8
Catch2 v3 auto-fetched for tests
OpenCV ≥ 4 optional; only for examples 09/12/13

Build

cmake -B build                          # core + tests + C++ examples
cmake --build build --parallel
ctest --test-dir build                  # run all tests including example smoke tests

Enable Python bindings:

cmake -B build -DKPN_BUILD_PYTHON=ON
cmake --build build --parallel

Skip examples:

cmake -B build -DKPN_BUILD_EXAMPLES=OFF

Your first pipeline

Three functions — source, transform, sink — wired into a Network:

--8<-- "examples/01_hello_pipeline/main.cpp:basic_node_fns"

Create nodes, connect them, build and run:

--8<-- "examples/01_hello_pipeline/main.cpp:network_build"

That's it. Types are inferred from function signatures. The channel between src and dbl carries int; the channel between dbl and prn also carries int. A type mismatch is a compile error.

Named ports

For nodes with multiple inputs or outputs, name the ports for clarity:

--8<-- "examples/02_named_ports/main.cpp:named_port_creation"

Wire by name instead of index:

--8<-- "examples/02_named_ports/main.cpp:named_port_network"

Multi-output nodes

Return a std::tuple to fan out to multiple downstream nodes:

--8<-- "examples/03_multi_output/main.cpp:multi_output_fn"

Wire each tuple element to its own downstream node:

--8<-- "examples/03_multi_output/main.cpp:fanout_network"