With the ongoing discussions of polyrepo vs monorepo, I became curious as to how build systems of these repos are managed. It occurred to me that my project is still a bit in the stone age compared to work at FAANG type companies, as we use handwritten Makefiles across the entire repo. However, it is a very old source tree (15+ years), only worked on by very experienced developers (10+ years).<p>I found a simple overview of some current build systems here: https://medium.com/@julienjorge/an-overview-of-build-systems-mostly-for-c-projects-ac9931494444<p>and was reading up on bazel as well, though it seems to be still in beta.
https://docs.bazel.build/versions/master/bazel-overview.html<p>My experience so far has been:
1. Makefiles - yes, dependency management and listing dozens of files is a pain, but I like the syntax and the directness of the system. Scaling can be a bit hairy if not properly managed
2. CMake - dislike the syntax, love the templating ability of "configure_file" to inject paths into built files.
3. SCons - just too slow. Best syntax of the build systems I've experimented with so far though.<p>So HN, what are your favorite build systems?