Building Quiver¶
This page covers building Quiver from source: the prerequisites, the CMake presets, and the build options. As of v0.6.0 the library, tests, and benchmarks all build. If you only want to add Quiver to your own project, see the vendoring guide instead.
Prerequisites¶
- CMake ≥ 3.28 (REQ-BUILD-001)
- A tier-1 compiler: GCC ≥ 13, Clang ≥ 17, or AppleClang ≥ 16 (Xcode 16). MSVC ≥ 19.40 is tier-2 best-effort. Toolchain matrix: PRD 03 §7.
- For the documentation site: Python ≥ 3.11 and
pip install -r docs/requirements.txt.
Configure¶
Always use presets (REQ-BUILD-011, CI invokes presets only, never ad-hoc flags):
cmake --preset dev # Debug, asserts on, tests on
cmake --preset release # Release, tests on
cmake --preset asan-ubsan # sanitized (forces asserts on, REQ-BUILD-012)
Preset inventory: dev, release, bench, asan-ubsan, tsan, msan, ci-gcc, ci-clang, ci-msvc (see CMakePresets.json). Build trees land in build/<preset>/.
Options¶
The exact option surface (REQ-BUILD-006, additions require a PRD amendment):
| Option | Default | Meaning |
|---|---|---|
QUIVER_ENABLE_TESTS |
ON top-level / OFF subproject | test suites |
QUIVER_ENABLE_BENCH |
OFF | benchmark suites |
QUIVER_ENABLE_EXAMPLES |
= tests default | examples |
QUIVER_ENABLE_ASSERTS |
ON for Debug | QUIVER_ASSERT contract checks |
QUIVER_ENABLE_WERROR |
OFF (ON in CI) | warnings as errors |
QUIVER_SANITIZE |
empty | address;undefined;thread;memory list |
QUIVER_DISABLE_AVX512 |
OFF | broken-toolchain escape hatch only |
QUIVER_PIN_ISA |
empty | compile-time ISA pinning (REQ-DISP-013): scalar/neon/avx2/avx512 |
BUILD_SHARED_LIBS is ignored with a warning, Quiver v1 is static-only (REQ-BUILD-002).
Building the documentation site¶
python3 -m venv .venv && . .venv/bin/activate
pip install -r docs/requirements.txt
mkdocs build --strict -f docs/mkdocs.yml # broken links fail the build (REQ-DOC-005)
mkdocs serve -f docs/mkdocs.yml # local preview
Consuming Quiver (from M8)¶
Three supported modes, installed package (find_package(Quiver CONFIG)), FetchContent/add_subdirectory, and the two-file amalgamation, all CI-verified from milestone M8 (REQ-BUILD-010; vendoring guide arrives then).