That’s it! I’m making my own C++ package manager…

David Delassus
3 min readJan 25, 2024
https://xkcd.com/927/

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…

--

--