An exploration of a cmake-integrated manifest for C++ projects. The goal is to allow CMake to inject build meta-data into a C++ project. The build information should then queryable from within the compiled application (e.g. via CLI) and should provide build traceability. This metadata is particularly useful in environments that employ automated build pipelines (continuous integration & delivery).
Meta-data:
- build version: DONE
- created-by: DONE
- build machine name DONE
- build date, time: DONE
- build architecture: DONE
- gcc/c++ compiler version: DONE
- git branch/hash/state: DONE
Goal: Ideally, this is a header-only library with associated CMake scripts. It should be simple to incorporate these files directly into your build system with as little modification as possible.
Acknowledgements: My ideas here are based on stuff I've seen in the build system for log4cplus. So, thanks to them for the idea!
Git cmake scripts are from rpavlik. Thanks!
Resources: Build meta-data can be defined lots of ways. Here's a good list of the kinds of things we look for in the software world.