Cmakepresets.json Example May 2026

Enter CMakePresets.json – a game-changing feature introduced in CMake 3.19 and continuously improved since. It allows you to define, version-control, and share build configurations in a single JSON file.

Most users start with configurePresets and buildPresets . Below is a real‑world CMakePresets.json for a C++ project supporting Linux (GCC/Clang), Windows (MSVC), and macOS. cmakepresets.json example

Managing CMake configurations across different environments (debug, release, Windows, Linux, macOS, CI/CD) can quickly become messy. Command-line variables and toolchain files are powerful, but they’re hard to share and standardize. Enter CMakePresets

Available configure presets: "dev-linux-gcc" - Linux GCC (Debug) "dev-linux-clang" - Linux Clang (Release) "dev-windows-msvc"- Windows MSVC (Debug) "ci-linux-release"- CI Linux Release cmake --preset dev-linux-gcc This creates build/dev-linux-gcc/ and configures with GCC in Debug mode. Build using a preset cmake --build --preset dev-linux-gcc Run tests (if you define test presets) ctest --preset default Advanced Tips Use environment variables "environment": "CCACHE_DIR": "$sourceDir/.ccache" Below is a real‑world CMakePresets

1. Version and Minimum CMake Version "version": 6, "cmakeMinimumRequired": "major": 3, "minor": 23, "patch": 0

| Array | Purpose | |-------|---------| | "version" | Required – specifies preset file schema version. | | "configurePresets" | Defines cmake --configure options. | | "buildPresets" | Defines cmake --build options. | | "testPresets" | Defines ctest options. | | "packagePresets" | Defines cpack options (CMake 3.23+). | | "vendor" | IDE‑specific extensions (e.g., Visual Studio). |