A test-driven C++ project template built on CMake, Catch2 and conan.
A test-driven multimodule C++ project template build with CMake with support for python bindings, using pybind11 and/or swig and crafted for TDD development cycle using Catch2 for C++ and Python unittest.
This project template, uses a by convention aproach, which modules are defined by just replicating a folder structured, and named by the forlder name. Those convensions will apply and be reflected in python package structure and C++ include and library structure.
pip install cookiecutter>=1.6.0 cookiecutter gh:practicalci/cookiecutter-cpp
context | parameter | Description | defaults |
---|---|---|---|
author | organization | name of the organization that owns the project | "practicalci" |
author | author of the project | "First Last" | |
email of the author | "<author>|replace(' ','.')|lower }}@gmail.com" | ||
licensing | license | license type under wh the software is licensed | one of {"MIT", "BSD-2-Clause", "BSD-3-Clause", "LGPL-2.1-only", "Apache-2.0", "GPL-2.0-only", "GPL-3.0-only", "LGPL-3.0-only", "Not licensed"} |
year | year of the license | 2019 | |
project | project_name | name of the project | "rock" |
description | one phrase describing the project, used in packaging description | "A rock solid project" | |
long_description | a more detailed description of the project added to the README.rst of the project | "A rock solid project with enforced style, testing and static analysis" | |
project_slug | name used in the project folder and part of the python package structure | "<project_name>|lower|replace(' ', '_')" | |
project_namespace | name used as a project namespace, namely C++ namespace, and python root package | "<organization>|first|lower" | |
version | project version | "0.0.0" | |
cpp_standard | C++ language standard | one of {"11","14","17","20","23","98"} | |
check_style | enable code check style? | true | |
git | git_server | git server url | one of {"bitbucket.org", "github.com"} |
username | git user name, part of the git url | "<author>|first|lower<author>.split()|last|lower" | |
branch | git active branch | "master" | |
remote | git remote | "origin" |