(And no, “just use autotools” is not a viable answer.)
(And no, “just use autotools” is not a viable answer.)
There is room for someone to come up with a good build system. It had better do everything autotools and cmake do, and be well documented and widely used, so there's a rather large barrier to entry.
./configure
make
make install
It couldn't be simpler. Even though I am part of the GitHub generation, I don't see why so many of my peers hate it. I actually like it.It’s a crawling horror for the programmer that wants to use autotools as the build solution for their code however, which is the topic under discussion.
Also, you don't need autotools itself to build a autotoolized program. The generated configure script is portable sh.
After packaging hundreds of programs for a GNU/Linux distro and dealing with handwritten Makefiles and other so-called autotools replacements: Yes, it is.
If you want someone to be able to build and install your software, just use the Autotools. Yup, they are ugly, but they're still the only set of tools that works acceptably.
It's a pleasure when autotools is used because in generally I know it's going to be nothing much more than
> --with-stuff/--without-stuff
and
> --prefix=$HOME/.local
and when it's not, at least I know I can just grep the shell script and figure it out pretty quickly without having to learn a whole new programming language.
It does all those things. It's fast. It's cross-platform. The language is Python.
It's a bit steep to learn and maybe doesn't have the most mature built-in recipes for certain complex builds like mobile or desktop frameworks, but it seems like those things would be addressed quickly if more people were using it. The maintainer is a class act, consistently putting out new features and bug fixes and working with pull requests.
swtoolkit made scons really nice to work with (but couldn't fix the speed issues). It's a shame it was abandoned. In the same way, a thin layer of functions as demonstrated in the waf "toolkit" examples could lean on the power of waf and provide a build system every bit as snazzy as big, polished systems like bazel and buck, but it would work cross-platform out of the box and be extensible with only Python. But I think waf is close enough to being high level that no one bothers to create and polish a build system layer (maybe internally in companies, but the open source uses I've seen use pretty standard waf scripts).