There are a lot of different C++ Build Systems out there and most of them are in a way awful. From what I’ve read, CMake has become on of the most used, even if it has quite a complicated syntax.
I’ve recently seen Rust with Cargo with a fairly simple syntax, which is a dependency manager, test-, bench- and buildsystem in one simply tool. Build2 aims to be Cargo for C++ but from what I’ve seen, they are just reinventing make.
I understand that cargo has advantages other systems don’t have. It’s integrated with rustc to know how files dependt on each other. It dictates you how have to structure your folders (which isn’t a bad thing in my mind). There is only one source for dependencies.
I thought of a bunch of different things, which are below, none of them seemed plausible enough to me, but I’ve never worked on a big project. Also most of that Cargo has covered. What am I missing, that requires these complex tools?
- Dynamic and Static linking
- 3 major compiler each with 100+ different flags
- passing build options what sould be included, eg. with TLS or without
- Split between Header and Source files
- Different Systems bis Hardware level
Source: Windows Questions C++