Skip to main content

copier configuration

Common configuration:

All users have to define following settings:

ParameterDefaultDescription
project_name""Name of your project e.g. My New Project, Testing Stuff, my-project
project_setupbasicChoice 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_slugslug from project_nameURL-friendly version of project_name used as the name for projects base directory and library name if applicable.
project_typeheader-onlychoices: header-only library, single library, single executable, multi-library project, multi-library with executable
licenseMIT LicenseOpen 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.

ParameterDescription
cpp_standardC++ standard set to C++17. Current strategy is to default to 1 version behind the newest one.
cmake_min_versionMinimal 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_testingUnit testing framework for basic projects uses GTest

Expert configuration:

Available only when user chose project_setup = expert:

ParameterDefaultDescription
cpp_standardC++17C++ standard supported by project
project_namespaceproject_slugbase namespace used within the project - if empty no namespace is used
cmake_min_version3.17Minimal CMake version needed by project - depending on what you want
dependenciesconan-1.xTool used for resolving 3rd-party libraries dependencies (currently only conan supported)
unit_testingGTest for C++98, doctest for newer standardsUnit testing framework used in project (or None)
ci_systemNoneGeneration of supported ci workflow - currently supported are: Gitlab and Github. Warning these use custom docker images which recipes are available in template repository.
code_coverageNoSupport for code coverage (enabled by cmake setting -DWITH_COVERAGE=ON)
include_what_you_useNoSupport for include-what-you-use-tool (enabled by cmake setting -DWITH_IWYU=ON)
sanitizeNoSupport for address and undefined behaviour sanitizers (enabled by cmake setting -DWITH_SANITIZE=ON)