copier-cpp-cmake
is project template based on copier tool.
- The main goal of this project is to provide an easy way to start with development of your new
C++
project and focus on the problem you want to solve instead of project structure/code formatting/basicCI
and other common "quality of life" issues. - The secondary goal is to make this project as flexible as reasonable. Allowing people to use different tools as they usually have different needs. Supporting them in updating of their projects when new tools are available or preferred after initial creation during development process.
- The third important aspect is to provide good
defaults
for each choice user can make (default to well established tools) so that less experienced users can use them as good starting point in theirC++
adventure.
What is not a goal of the project:
- Currently, it is not a goal to help you install/maintain all necessary tools on your machine. The project provides
docker
images forCI/CD
which can be used during development - but taking care of having properly installed tools is your responsibility.
WARNING
Currently, project is still in active development and until version
1.0.0
breaking changes may occur unexpectedly.
Python
version3.7
or newer.copier
version6.0.0
or newer andcopier-templates-extensions
.cmake
with reasonably new version (3.xx
)conan
for providing dependencies (vcpkg
to be supported in future)- compiler of your choice
python3 -m pip install cmake copier copier-templates-extensions conan
To start project generation simply use command:
copier [email protected]:MaciejPatro/copier-cpp-cmake.git .
To update project use command:
copier update <project_dir>
More information you can find on website: https://maciejpatro.github.io/copier-cpp-cmake/
-
github-pages
introduced - support for
vcpkg
- support for
Windows
OS - choice of providing own
namespace
for the project instead of defaulting toproject_slug
- automated deployment of docker images provided in this repository
- support for installation of exporting the software as packages (
deb
,rpm
,tgz
) - support for
conan
package creation -
ci/cd
improvements - deployment of tagged releases support -
clang-tidy
support -
clang-format
as part of CI (possibly) - periodic updates for supported standards/compiler versions
- much more...