Repository navigation
CMake Boilerplate v1.0.0 — Initial Release
This is the first versioned release of CMake Boilerplate, a cross-platform C++ build framework and project template designed to simplify project setup, development, testing, packaging, and distribution.
The framework provides a reusable build infrastructure for C++ libraries, runtimes, and applications while preserving access to native CMake targets, properties, and toolchains.
Highlights
- One-command bootstrap: Detect and provision supported host tools, configure, build, test, and optionally run applications on Windows, Linux, and macOS.
- Project initialization: Generate standalone C++ projects with renamed targets, presets, package identifiers, and build infrastructure.
- Composable build model: Reusable library, runtime, application, host, plugin, component, and target-policy abstractions.
- Build configurations: Support for GCC, Clang, and MSVC, with configurable LTO, PGO, sanitizers, hardening, compiler caching, and cross-compilation.
- Testing and diagnostics: CTest, property-based testing, fuzzing, coverage, benchmarks, and static-analysis integrations.
- Native distribution: CPack integration for NSIS, DEB, RPM, DMG, ZIP, and TGZ, plus Arch Linux packages through
makepkg. - Library distribution: Static and shared library variants, install/export rules, relocatable CMake package configurations, and vcpkg integration.
- Cross-platform CI: Automated build, test, package, and consumer verification across supported environments.
Requirements and supported platforms
CMake 3.26 or newer is required. The supplied build presets use Ninja. Supported native toolchains include GCC, Clang, and MSVC.
The default C++ language level is C++23, with configurable C++17 and C++20 support.
Optional features may require additional SDKs or tools. Platform-specific packaging requires the corresponding native packaging utilities.
Getting started
On Linux and macOS:
./setup.sh --init MyProject --runOn Windows:
.\setup.ps1 -Init MyProject -RunAdd --package or -Package to produce distribution packages.
The bootstrap uses Bash, PowerShell, and CMake without requiring Python.
vcpkg source distribution
Version 1.0.0 of the example libraries library1 and library2 is available through the project's versioned vcpkg Git registry.
The packages are built from pinned source archives. No precompiled binary packages are distributed.
The registry includes version metadata and a separate baseline commit. Consumers must use the published registry baseline rather than assuming the source release tag is itself a registry baseline.
An independent registry-consumer.zip example is attached to this release. The consumer configuration pins the tested registry revision.
See [vcpkg documentation](https://github.com/cpp20120/cmake_boilerplate/blob/main/vcpkg/README.md) for integration instructions.
Compatibility and upgrade notes
This is the initial versioned release; there are no earlier stable-version migration requirements.
Public CMake APIs, project configuration conventions, and package interfaces introduced here establish the starting point for future compatibility management.
Existing projects using older unversioned boilerplate snapshots may require adjustments when adopting the new project lifecycle and target-policy model.
Security
No CVE remediation is announced as part of this initial release.
For security reporting and supported-version information, see the [Security Policy](https://github.com/cpp20120/cmake_boilerplate/blob/main/SECURITY.md).
Source and reproducibility
Source tag: v1.0.0
Source commit: 60b591ca25b2c58d2ece386b7e649b34138bf5fd
vcpkg Git registry baseline: c9fa94995a45ce1d0c48ba0c7cd5ffcb47c25991
The release's existing SHA512 metadata should be retained to allow verification of the pinned source archive.
Source code and documentation: https://github.com/cpp20120/cmake_boilerplate