Out of curiosity, your build scripts are you invoking make/msbuild directly? It's just I recently learnt a
neat little part of cmake that you'd think would be highlighted as a major feature but almost nobody ever talks about or seems to use: --build, --target and --config.
My build scripts for most cmake-based C++ libraries nowadays just look like
cmake ../SFML -G"[Generator Here]" -DCMAKE_BUILD_TYPE=[Debug/Release] -DCMAKE_INSTALL_PREFIX=[SFML DIR]
cmake --build . --config [Debug/Release]
cmake --build . --config [Debug/Release] --target install
No more worrying about if it's make, mingw32-make, msbuild /p:Configuration=Nonsense. Just three lines that can be used for any compiler.
Much more re-usable. So much re-usable I wrote a dependency management tool for C++ for myself that uses these with git for version control. Got it working for a basic cmake install, with caching and automated updating, already
Need to add custom cmake flags and tag/branch based versioning and it's more or less usable for the majority of cmake-based projects xD Versioning will be where the complexity lies, I'm guessing. May release it into the wild at some point