A simple, production-ready C++ starter template for libraries and small applications.
- Modern CMake with a library target and install/export support
- C++17 baseline with warnings enabled
- GoogleTest integration and CTest presets
- Cross-platform CI workflow for Linux, Windows, and macOS
- Pre-commit formatting and lint hooks
- Dev container support for fast onboarding
- Rename helper for adapting the template to a real project name
- Version: v2.0.0
- Latest review: 2026-08-29
- Goal: complete, simple, and easy to personalize
# 1) personalize the template
.\scripts\rename-template.ps1 -ProjectName "MyProject" -Author "Your Name" \
-Email "you@example.com" -GitHubOwner "your-github-user"
# 2) build and test
cmake --preset dev
cmake --build --preset dev-build
ctest --preset dev-test --output-on-failureFor the full onboarding flow, see GETTING_STARTED.md.
- GETTING_STARTED.md — first-run workflow and troubleshooting
- NAMING_CONVENTIONS.md — naming rules and project cleanup guidance
- CHANGELOG.md — release history
- docs/release_checklist.md — release checklist
.
├── .devcontainer/
├── .github/
├── cmake/
├── cmakehelpers/
├── docs/
├── include/
├── scripts/
├── src/
├── tests/
├── .clang-format
├── .editorconfig
├── .gitignore
├── .pre-commit-config.yaml
├── CMakeLists.txt
├── CMakePresets.json
├── CHANGELOG.md
├── GETTING_STARTED.md
├── LICENSE
├── main.cpp
├── NAMING_CONVENTIONS.md
├── README.md
├── SECURITY.md
├── build_and_run_project.cmake
└── Doxyfile
- Run the rename script once from the repository root.
- Replace the sample module with your real domain code.
- Keep the standard governance files unless you intentionally customize them.
- Validate locally with the dev preset before pushing.
- Publish using the release checklist in docs/release_checklist.md.
This repository is intentionally lean: the main onboarding path is short, the build flow is standard, and the project rules are documented without extra noise.