The only reason C++ projects depend upon submodules is because C++ is just as archaic as COBOL these days.
I used to be one of the more vocal defenders of C++ but honestly, if the reason you’re defending git submodules is because there’s no better option in C++; then you’ve basically already lost the argument.
Nearly every other language has found a better alternative. Even Go has, and that’s largely mocked for its prehistoric approach to modern programming language design.