Skip to content

MarkRakhmatov/CppStaticLibTemplate

Repository files navigation

CppStaticLib

ci

About

C++ 23 static library template

By default:

  • Warnings as errors
  • clang-tidy and cppcheck static analysis
  • CPM for dependencies

It includes

  • unit testing using UT/μt

  • fuzz testing using fuzztest

  • tooling to verify consistent commits format inspired by conventional commits

  • autocreation of version tags in main branch based on commits

  • Documentation powered by doxygen, graphviz and doxygen-awesome-css

    Publishing of documentation to Gitpub Pages, enabled by default(see 'Deploy Pages' job in CI), cofigure repository to enable Pages with "Github Actions" source. To build documentation locally, install doxygen and graphviz, set CMake variable %%myproject%%_DOC. If doxygen not found, set %%myproject%%_DOXYGEN_SEARCH_PATHS to directory contaning doxygen binaries. If dot (graphviz utility) not found, set %%myproject%%_GRAPHVIZ_BIN_PATHS to directory contaning graphviz binaries.

Commits format

  1. API breaking change (will increment major version) For example: removal of public interface parts after introducing new version of API Please, provide short description with reasons and migration hints if needed
api: remove deprecated v1 API
api(parser): hide parser API from public interface
  1. New feature or backward compatible API change (will increment minor version and reset patch to 0)
feat: introduce parser v2 API
feat(parser): extend parser v2 API public interface
  1. Fix of bug in existing logic
fix: bug with list parsing in v2 API
refactor(parser): reduce heap allocations in parser v2 API

It requires

  • cmake
  • a compiler

Platforms and compilers support matrix:

Windows Ubuntu
MSVC ✔️
clang ✔️
gcc ✔️

Usage

  1. Click on 'Use this template', select 'Create a new repository'
  2. After initial commit, template janitor action triggered to cleanup repo (rename files, replace readme, verify that build works)
  3. Clone new repository, rename 'csl' namespace, write your code
  4. Publishing of documentation to Gitpub Pages, enabled by default(see 'Deploy Pages' job in CI), cofigure repository to enable Pages with "Github Actions" source
  5. Commit your changes to main, use conventional commits (for example 'feat: initial commit')
  6. Wait for CI to complete and create version 0.1.0 of your library

Congrats, now you can focus on your code

About

C++ static library template

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors