It's a weird that after 50+ years of C (and C++) development, the best system for building is CMake. It kind of does work, but it has so many rough edges, it's so hard to hold correctly and it's mostly totally crap.
Sure, there are some other systems that work better for happy cases but nothing that's common.
Maybe the C++ standard folks should fix this instead of all kinds of template wanking all the time? This is undoubtedly the biggest hurdle for C/C++ users.