It's been a while since I used it in earnest, so my memory is hazy enough that I can't be specific. One of the largest pieces of work I've done in C++ was not writing C++, but working out how to ask bazel to build a single shared library that imports other bazel libraries. I've never used such a confusing and frustrating package manager. It was frequently unclear how to do things, despite the project having quite a lot of documentation.
When I read it supports multiple languages, I had two thoughts:
- Why? That feels like trying to write a single style sheet for both English and Mandarin.
- That might explain why it's so confusing. I surmised: I has to bend over backwards to support all these different languages and their different module and packages architectures. And it doesn't manage to hide that complexity from the user.



Hmmm, you might be right. It's definitely a build system. I'm trying to think if it's a package manager, and if it's not, what is playing the role of the package manager.
EDIT seems to be both, which admittedly makes my point less relevant.
https://moderncppdevops.com/pkg-mngr-roundup/#build-systems-and-environment-managers