Modern Cpp Template Versions Save

A template for modern C++ projects using CMake, Clang-Format, CI, unit testing and more, with support for downstream inclusion.

v4.1.0

2 years ago

Features

  • Add a _DEBUG macro for Unix systems, alongside the MSVC one (GH-31)

v4.0.1

2 years ago

Fixes

  • Verbose output now prints the sources and headers found (GH-29).

v4.0.0

2 years ago

Fixes

  • Fixed the default cmake/Conan.cmake file to work out of the box (#28)

v3.1.0

2 years ago

Fixes:

  • MSVC runtime library not being setup properly (#24)
  • Removed ${PROJECT_NAME}_BUILD_SHARED_LIBS in favour of the standard CMake BUILD_SHARED_LIBS (#26)

v3.0.0

2 years ago

Various bug fixes

v2.0.0

3 years ago

Improvements

  • Switched to using modes for CMake's message function
  • Updated clang-format target to format files according to the project type

Fixes

  • Fixed when building executable, which made unit testing libraries fail to link with the project
  • Removed hard-coded project name from the testing project's linking step

v1.0.0

3 years ago

v0.1.0

3 years ago

Features

  • Modern 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