🐕 wuffmeister
Introduction
wuffmeister is primarily a CMake build system that is useful for large scale C/C++ software projects. But wuffmeister is more than that. It is more a manifest of the development process I operate my work with. From coding, building and debugging to unit and benchmark testing as well as the whole CI/CD process, wuffmeister enbodies all the methods and operation principles in one place.
📜 The manifest
Entry point
wuffmeister as a repository is the entry point for development. Its designed for development in Visual Studio Code, but can also be operated from command line or be extented for configuration with other IDEs. wuffmeister comes with just the tools, that are required to create/repair, build and test C/C++ projects. From here one can create a new project being compatible with the wuffmeister build system.Development path
As for every coding project it is highly recommended to put the codebase into a version control system, f.ex. gitlab or github. Developers can create issues serving as initial specification for software features but also reporting of bugs. A clear specification should be the actual entry point in the coding process.Coding is initiazed by creating a feature branch referring to that particular from the current development branch. After work is done on the feature branch, the feature or bug fix is being tested by pushing the code to the version control. At this point, pipelines are triggered, that run unit tests and code coverage metrics to evaluate acceptance directly after commit. In case code is accepted, the commit can be merged in to the documentation branch. Here the developer is required to properly document the changes (writing proper changeslogs) but also document code inside codefiles utilizing doxygen. Only in case the documentation branches pipeline fully suceeds the development is allowed to proceed further. The next step after documentation is profiling and benchmarking, i.e. testing the performance of the code and existing code after the code change. The C/C++ base project contains, beside its unit testing system, a system for running benchmarking tests of code runtime and precision metrics. In case performance profiles satisfy the specified requirements, the code is ready to be merged into the development branch, where all changes staged for release are being halted. When all required changes are included for a new software release, the code from the development branch are being merged into the main branch and being tagged.
As one can see, the manifest of the development path contains strict rules for securing code quality, documentation and performance as well as integration.
Requirements
| minimal | recommended | |
| Operating system | Linux | |
| Architecture | x86 | |
| CMake | 3.27 | newest |