ktools-cpp/ is the C++ workspace for the broader ktools ecosystem. It
collects the C++ implementations of the shared libraries in one repo while
preserving clear component boundaries inside the tree.
The main workspace components are:
kcli/ktrace/kconfig/ki18n/
If you are building, integrating, or consuming the C++ SDKs, start here. If you are modifying library internals or repo structure, see AGENTS.md.
Clone the workspace normally:
git clone git@github.com:QM-Code/ktools-cpp.gitThe shared build tool is kbuild, expected on PATH.
Useful first checks:
kbuild --help
kbuild --batch --build-latestkbuild --batch runs the command across the configured workspace components in
dependency order.
Use the workspace root when you want to build or clean the whole C++ stack:
kbuild --batch --build-latest
kbuild --batch --clean-latest
kbuild --batch --clean-allUse an individual component directory when you only need one SDK or tool:
cd kcli
kbuild --build-latestGeneral output layout:
- core build tree:
build/<slot>/ - core SDK install prefix:
build/<slot>/sdk/ - demo build tree:
demo/<demo>/build/<slot>/ - demo SDK install prefix:
demo/<demo>/build/<slot>/sdk/when applicable
kcli/CLI parsing SDK with top-level option parsing, inline--<root>parsing, aliases, and demo SDK/executable examples.ktrace/Trace/logging SDK layered on top ofkcli.kconfig/JSON configuration/storage SDK layered on top ofkcliandktrace.ki18n/Internationalization/localization SDK layered on top of the stack above it.
From a repo root:
kbuild --build-latest
kbuild --build <slot>
kbuild --build-demos [demo ...]
kbuild --clean-latest
kbuild --clean <slot>If a repo uses vcpkg, first-time setup is usually:
kbuild --vcpkg-installRunning kbuild with no arguments from a valid repo root prints usage.
The C++ components are intended to layer on each other:
kcliktracekconfigki18n
That dependency order matters both for SDK consumption and for demo builds. Later components may depend on SDK artifacts produced by earlier ones.
For implementation and API details, use the component docs directly: