A template for modern C++ projects using CMake, Clang-Format, CI, unit testing and more, with support for downstream inclusion.
_DEBUG
macro for Unix systems, alongside the MSVC one (GH-31)cmake/Conan.cmake
file to work out of the box (#28)${PROJECT_NAME}_BUILD_SHARED_LIBS
in favour of the standard CMake BUILD_SHARED_LIBS
(#26)Various bug fixes
message
functionclang-format
target to format files according to the project typeModern CMake configuration and project, which, to the best of my knowledge, uses the best practices,
An example of a Clang-Format config, inspired from the base Google model, with minor tweaks. This is aimed only as a starting point, as coding style is a subjective matter, everyone is free to either delete it (for the LLVM default) or supply their own alternative,
Static analyzers integration, with Clang-Tidy and Cppcheck, the former being the default option,
Doxygen support, through the ENABLE_DOXYGEN
option, which you can enable
if you wish to use it,
Unit testing support, through GoogleTest (with an option to enable GoogleMock) or Catch2,
Code coverage, enabled by using the ENABLE_CODE_COVERAGE
option, through
Codecov CI integration,
Package manager support, with Conan and Vcpkg, through their respective options
CI workflows for Windows, Linux and MacOS using GitHub Actions, making use of the caching features, to ensure minimum run time,
.md templates for: README, Contributing Guideliness, Issues and Pull Requests,
Permissive license to allow you to integrate it as easily as possible. The template is licensed under the Unlicense,
Options to build as a header-only library or executable, not just a static or shared library.
Ccache integration, for speeding up rebuild times