Build and install
Build the pinned preview into a fresh directory and install it into a prefix that no other SDK build can populate. CMake 3.22 is the package minimum; the project requires C++20.
Required evidence configuration
Section titled “Required evidence configuration”The documented evidence build uses the real libsndfile provider. SndFile::sndfile must be discoverable by CMake; do not substitute an automatic provider, a package-config fallback, or a provider-disabled build for this procedure.
export SDK_SOURCE=/path/to/treefall-sdkexport SDK_BUILD=/tmp/treefall-sdk-0.9.0-buildexport SDK_PREFIX=/tmp/treefall-sdk-0.9.0-installrm -rf "$SDK_BUILD" "$SDK_PREFIX"
cmake -S "$SDK_SOURCE" -B "$SDK_BUILD" \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX="$SDK_PREFIX" \ -DORPHEUS_ENABLE_REALTIME=ON \ -DORP_WITH_TESTS=OFF \ -DORPHEUS_ENABLE_EXTENDED_TESTS=OFF \ -DORPHEUS_SNDFILE_PROVIDER=SndFilecmake --build "$SDK_BUILD"cmake --install "$SDK_BUILD"The release evidence configuration disables the SDK’s own test targets so the clean prefix contains only the package surface used by the verified examples. A ctest invocation is still useful as a guard against accidentally configuring a different build directory:
ctest --test-dir "$SDK_BUILD" --output-on-failureWith ORP_WITH_TESTS=OFF, no SDK tests are registered. For a separate SDK test run, configure another clean build directory with -DORP_WITH_TESTS=ON; never add tests to, or reuse, the evidence prefix.
Confirm the package boundary
Section titled “Confirm the package boundary”A successful install contains headers, libraries, CMake package configuration, and the installed target manifest. Consumers should point CMAKE_PREFIX_PATH at SDK_PREFIX and request the exact package version:
cmake -S your-app -B your-app-build \ -DCMAKE_PREFIX_PATH="$SDK_PREFIX" \ -DCMAKE_BUILD_TYPE=ReleaseThe package configuration checks its provider dependency. If SndFile::sndfile was not available while configuring the SDK, configuration fails with a required-provider error rather than silently producing a file-I/O-disabled package. If the install prefix contains an older package, CMake can report a version mismatch or expose stale targets; remove the prefix and repeat the clean sequence.
Failure outcomes
Section titled “Failure outcomes”- CMake too old: configuration stops at the package minimum. Upgrade CMake rather than bypassing the requirement.
- No C++20 compiler: configuration or compilation fails. Use a compiler with C++20 and its matching standard library.
- Missing
SndFile::sndfile:-DORPHEUS_SNDFILE_PROVIDER=SndFileis a hard prerequisite. Install the development package that exports that target and configure again. - Mixed prefix: package discovery may find a different version or target set. Delete both build and install directories, then set
CMAKE_PREFIX_PATHonly when configuring the consumer. - Device backend unavailable: a successful core build does not imply a device backend. Check target availability and runtime capability results before opening hardware.
The root build options and install layout are defined in the pinned CMake project; provider resolution and package dependency checks are described by the package configuration and provider-facing configuration.