copier configuration
Common configuration:
All users have to define following settings:
Parameter | Default | Description |
---|---|---|
project_name | "" | Name of your project e.g. My New Project , Testing Stuff , my-project |
project_setup | basic | Choice of the project configuration you want to setup choices: basic (reasonable defaults for simple projects), expert (extensive setup with choices for testing framework, C++ standard, CI, static analysis, packaging etc.) |
project_slug | slug from project_name | URL -friendly version of project_name used as the name for projects base directory and library name if applicable. |
project_type | header-only | choices: header-only library , single library , single executable , multi-library project , multi-library with executable |
license | MIT License | Open source license for the project visible in LICENSE file and source code comments. |
license_owner | "" | Owner of the license (author/you?) |
Basic configuration defaults:
Settings that are automatically applied when project_setup = basic
.
Parameter | Description |
---|---|
cpp_standard | C++ standard set to C++17 . Current strategy is to default to 1 version behind the newest one. |
cmake_min_version | Minimal supported CMake version 3.17 as some configurations use features from this version. Strategy is to upgrade requirement only when newer features are used in template |
unit_testing | Unit testing framework for basic projects uses GTest |
Expert configuration:
Available only when user chose project_setup = expert
:
Parameter | Default | Description |
---|---|---|
cpp_standard | C++17 | C++ standard supported by project |
project_namespace | project_slug | base namespace used within the project - if empty no namespace is used |
cmake_min_version | 3.17 | Minimal CMake version needed by project - depending on what you want |
dependencies | conan-1.x | Tool used for resolving 3rd-party libraries dependencies (currently only conan supported) |
unit_testing | GTest for C++98, doctest for newer standards | Unit testing framework used in project (or None ) |
ci_system | None | Generation of supported ci workflow - currently supported are: Gitlab and Github . Warning these use custom docker images which recipes are available in template repository. |
code_coverage | No | Support for code coverage (enabled by cmake setting -DWITH_COVERAGE=ON ) |
include_what_you_use | No | Support for include-what-you-use-tool (enabled by cmake setting -DWITH_IWYU=ON ) |
sanitize | No | Support for address and undefined behaviour sanitizers (enabled by cmake setting -DWITH_SANITIZE=ON ) |