That’s it! I’m making my own C++ package manager…
Managing dependencies in C/C++ projects is a pain. Each library seem to have its own build system, nothing is standardized even if most of them use CMake.
I usually solve this by vendoring the dependencies, using git submodule
for example, and compile them statically.
But when you start to have transitive dependencies, and nested git submodules, I start looking like this:
If my project has a direct dependency to a library, and a transitive dependency to the same library, simply using add_subdirectory
with CMake and nested submodules will pull in the dependency twice, and build it twice. What a waste of resource…
If a transitive dependency is updated, I need to update the whole tree of nested git submodules. What a pain…
On top of that, I need to wrap the dependencies’s build system in my own, to make sure everything goes smoothly…