CMake Reference
This page documents the project-specific CMake configuration from
CMakeLists.txt and CMakePresets.json.
Recommended: workflow-first builds
Use workflow presets as the default entry point. They run the expected configure/build/test sequence and reduce manual flag drift.
# Release builds
cmake --workflow --preset build-release-default
cmake --workflow --preset build-release-tbb
cmake --workflow --preset build-release-omp
# Test, Python interface, and docs
cmake --workflow --preset build-and-test-release
cmake --workflow --preset build-and-test-debug
cmake --workflow --preset build-python-interface
cmake --workflow --preset build-docs
Project Options
Option |
Default |
Description |
|---|---|---|
|
|
Build the |
|
|
Build the core C++ library target |
|
|
Build the nanobind module |
|
|
Enable install rules for the Python interface/package. |
|
|
Build unit tests (target |
|
|
Force fetching GoogleTest even if a local install exists. |
|
|
Build Sphinx/Doxygen documentation. |
|
|
Build benchmark executable |
|
|
Enable include-what-you-use integration during compilation. |
KD_TREE_PARALLELIZATION |
CPP |
Backend for Thrust host/device path:
CPP, OMP,TBB. |
KD_TREE_LOGGING_LEVEL |
Active logging level:
TRACE, DEBUG, INFO, |
WARN, ERROR, CRITICAL, OFF. |
BUILD_KD_TREE_LIBRARY is a dependent option and is forced ON when
the executable or tests are enabled.
Standard CMake Variables
Variable |
Description |
|---|---|
|
Used for single-config generators (for example Ninja).
Presets set |
Presets Overview
Configure presets (from CMakePresets.json):
Preset |
Inherits |
Main purpose |
|---|---|---|
|
|
Standard release build (CPP backend). |
|
|
Debug build, |
|
|
Release build with OpenMP backend. |
|
|
Release build with TBB backend. |
|
Test build in Release with |
|
|
|
Test build in Debug with |
|
|
Python interface (CPP backend), CLI off. |
|
|
Python interface with TBB backend. |
|
|
Python interface with OpenMP backend. |
|
|
Docs-only configure preset. |
Build presets:
release,debug,release-omp,release-tbbtest-release,test-debugpython-cpp,python-omp,python-tbbdocs-build(build target:Sphinx)
Test presets:
test-releasetest-debug
Workflow presets:
build-release-defaultbuild-release-ompbuild-release-tbbbuild-and-test-releasebuild-and-test-debugbuild-python-interfacebuild-docs
Typical Commands
Preferred: run workflows directly:
# cmake --workflow --preset <preset-name>
cmake --workflow --preset build-release-default
cmake --workflow --preset build-release-tbb
cmake --workflow --preset build-release-omp
cmake --workflow --preset build-and-test-release
cmake --workflow --preset build-and-test-debug
cmake --workflow --preset build-python-interface
cmake --workflow --preset build-docs
Alternative: manual configure/build (only when custom flags are needed):
cmake -S . -B build/custom -DCMAKE_BUILD_TYPE=Release -DKD_TREE_PARALLELIZATION=OMP -DKD_TREE_LOGGING_LEVEL=INFO -DBUILD_KD_TREE_EXECUTABLE=ON -DBUILD_KD_TREE_TESTS=OFF
cmake --build build/custom