LCA: Disintermediating distributions
Posted Feb 6, 2008 22:56 UTC (Wed) by
stevenj (guest, #421)
In reply to:
LCA: Disintermediating distributions by aleXXX
Parent article:
LCA: Disintermediating distributions
It's also hard to
convince e.g. students who have a hard time learning C or C++ that they
additionally have to learn autoconf, automake, libtool, shell, m4 and
make syntax. It just doesn't make sense if the build tool is more
complicated than the programming language itself.
Skilled programmers don't have a hard time learning a new syntax. What makes a tool like autoconf difficult is that the underlying portability problem it solves is quite hard and intrinsically complicated.
In my experience, non-trivial projects that avoid autoconf tend to start re-inventing it, badly, as soon as they move beyond compiling just on GNU/Linux systems and interacting in non-trivial ways with the build environment. There's a reason why most major free projects use it (except for Python and Perl programs, which live in their own self-contained little build universes, although once they start depending on other external non-Python/Perl libraries it can quickly get messy again).
Similar things happen with automake, although admittedly some of automake's complexity comes from having to deal with the underlying deficiencies of 'make'. But there is also a fair amount of intrinsic complexity from the fact that you want to support a lot of make targets (make dist, make clean, make distclean, make check, make install, make uninstall, etc. etc.), VPATH builds, source files that are built by scripts or programs in some projects, multiple languages and compilers, different compile/link flags for different programs in the same projects, building shared libraries on multiple platforms with very different shared-library build procedures and semantics, etcetera etcetera.
By the time you understand the underlying problem, using the actual tool is pretty straightforward and well documented (see e.g. the "autobook").
(
Log in to post comments)