> It's one line of change for any build system..
That is simply not true. Lots of build systems assume certain things in certain places and output to be something (what if you want a .so but the build only spits out .a etc.). In any case you may have to resort to shell scrips or launching shell scrips from your own build system. In short: it sucks.
And there is also the case when the dependency has dependencies itself. Adding a dependency is one of the biggest PITAs in any C/C++ project. For these reasons:
1. No standardized build system.
2. No standardized use/configuration of common build systems (everyone uses CMake/SCons/whatever slightly differently)
3. Dependencies may have other dependencies, which use yet another build system (see 1. & 2.)
This is the reason why 'single header library' is a 'feature' C/C++ devs look out for when deciding on taking on a dependency.
It makes adding such 'libraries' as deps a no brainer as far as the above is concerned. I.e. your average Rust crate is to your Rust project as is a single header C/C++ to your C/C++ project. Every other kind of dependency is potential pain.