Awesome Open Source
Awesome Open Source

Project Status: Active – The project has reached a stable, usable state and is being actively developed. Build Status Build status Coverage Status codecov Codacy Badge Language grade: C/C++ Total alerts license Lines of Code Average time to resolve an issue Percentage of issues still open

Boiler plate for C++ projects

This is a boiler plate for C++ projects. What you get:

Demo of usage


├── CMakeLists.txt
├── app
│   └── main.cpp
├── include
│   ├── example.h
│   └──
├── src
│   └── example.cpp
└── tests
    ├── dummy.cpp
    └── main.cpp

Sources go in src/, header files in include/, main programs in app/, and tests go in tests/ (compiled to unit_tests by default).

If you add a new executable, say app/hello.cpp, you only need to add the following two lines to CMakeLists.txt:

add_executable(main app/main.cpp)   # Name of exec. and location of file.
target_link_libraries(main PRIVATE ${LIBRARY_NAME})  # Link the executable to lib built from src/*.cpp (if it uses it).

You can find the example source code that builds the main executable in app/main.cpp under the Build section in CMakeLists.txt. If the executable you made does not use the library in src/, then only the first line is needed.


Build by making a build directory (i.e. build/), run cmake in that dir, and then use make to build the desired target.


> mkdir build && cd build
> cmake .. -DCMAKE_BUILD_TYPE=[Debug | Coverage | Release]
> make
> ./main
> make test      # Makes and runs the tests.
> make coverage  # Generate a coverage report.
> make doc       # Generate html documentation.


The .gitignore file is a copy of the Github C++.gitignore file, with the addition of ignoring the build directory (build/).


If the repository is activated with Travis-CI, then unit tests will be built and executed on each commit. The same is true if the repository is activated with Appveyor.

If the repository is activated with Coveralls/Codecov, then deployment to Travis will also calculate code coverage and upload this to and/or


Using the GitHub template

Click the Use this template button to make a new repository from this template.

From command line

When starting a new project, you probably don't want the history of this repository. To start fresh you can use the setup script as follows:

> git clone  # Or use ssh-link if you like.
> cd cpp-project
> bash

The result is a fresh Git repository with one commit adding all files from the boiler plate.

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Cpp (15,413
Cmake (8,142
Boilerplate (5,574
Github Actions (3,742
Actions (1,702
Travis Ci (1,697
Template Project (439
Project Template (317
Code Review (276
Codecov (239
Code Coverage (205
Coveralls (153
Related Projects