Introduction¶
When setting up a C++ Software project multiple tasks besides writing the actual C++ code arise.
Organizing the code-base into smaller packages.
Versioning of the packages.
Automatic acquisition of external software dependencies.
Creating package archives that can be consumed by others.
Setting up a build pipeline that also does additional tasks like running automated test, static/dynamic analysis, generate documentation, etc.
Setting up a CI-server to run the pipeline.
Setting up a homepage for the project that hosts the documentation.
The CMakeProjectFramework tries to solve the above mentioned problems by using a combination of common open source tools from the C++ ecosystem. The third party tools used by the CMakeProjectFramework are:
Required¶
Optional¶
Jenkins (CI server)
Cotire (CMake module for pre-compiled headers)
Sphinx (documentation generator)
clang-tidy (static code analysis)
valgrind (dynamic code analysis)
OpenCppCoverage (test coverage visualization)
Abi Compliance Checker (visualize changes in the API/ABI between package versions)
Graphviz (generates pictures of graphs from text-based definitions)
Using the CPF should relieve you of writing your own higher level CMake code or other additional scripts to implement pipeline tasks. It can additionally provide a Jenkins CI infrastructure that is (in the future) completely generated from text-files.