I am quite a new user of cmake, but I have pretty good experience with gradle and maven.
When googling around for cmake capabilities, most resources I find are focused on fulfilling different aspects of building source for target.
I am interested in using CMake to also run other project tasks such as for instance
- automatically sync with a git fork upstream repository
- post a release page via a REST api
- provide user with information (i.e. run tasks similar to ‘git status’ that only produces feedback to the user but no build output/side effects)
- produce all kinds of non-code resources such as archive files, producing documentation pdfs
- determine a build-id via git history (based on tags and revision history, similar to git describe)
- automate setup of hardware interaction (i am working with embedded software, so there are numerous of possible tasks related to connecting, uploading running on target that would be nice to automate.)
So far I’ve understood that it seems possible to do all or most of these things with CMake, although it does not seem like an ordinary use case.
My question is this:
Is cmake a good fit for creating automation support similar to what i mentioned above, or should I let cmake focus only on building? If cmake is a good fit, what approach of implementation would be 'best practice"?
(also, I’m thankful for all/any tips on resources where I could learn how to do the above mentioned things)