Skip to content

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.

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.

Terminal window
export SDK_SOURCE=/path/to/treefall-sdk
export SDK_BUILD=/tmp/treefall-sdk-0.9.0-build
export SDK_PREFIX=/tmp/treefall-sdk-0.9.0-install
rm -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=SndFile
cmake --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:

Terminal window
ctest --test-dir "$SDK_BUILD" --output-on-failure

With 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.

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:

Terminal window
cmake -S your-app -B your-app-build \
-DCMAKE_PREFIX_PATH="$SDK_PREFIX" \
-DCMAKE_BUILD_TYPE=Release

The 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.

  • 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=SndFile is 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_PATH only 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.