For my university project I actually looked at C++ dependency management. I concluded pretty early on that any kind of binary hosting-based dependency management system is impractical at best, impossible at worst. So I made a system that uses Git and CMake to acquire, compile and cache dependencies, then updates those compiled dependencies. So long as the compiler in use for MinGW/Unix Makefiles remains consistent, ease of install and binary compatibility are fixed. Though you update/change compilers, you do have to manually delete the cache atm.
So using this system, getting the latest SFML debug binaries is as simple as:
zander_client get sfml2 mingw debug
Which will, internally do a git clone or git pull of sfml to a source cache, then do a cmake build of sfml2, install the artefacts from that build into an artefact cache, and then copy those artefacts to the working directory. If artefacts are already in the cache and up-to-date, it just does the copy to the working directory. If they're in the working directory but out of date, they get replaced by the up-to-date artefacts. If they're in the working directory and up-to-date, nothing happens.
At the moment the tools are pretty simple, a
client written in scala and a
simple rest api written in node.js, but I was planning on posting them here after I add a few more features. Like support for tags and branches, and custom cmake flags (which means different branches, tags and flags will have to result in a different cached artefacts).
Also it requires the source to be open source, hosted in a git repository and buildable and installable via cmake. So baby steps xD