'''[http://en.wikipedia.org/wiki/Make_%28software%29%|%make]''' is a classic [Unix] program to mange the process of building other programs. Popular implementation of make include [http://www.gnu.org/software/make/make.html%|%GNU make]. ** Non-Tcl Alternatives ** [Boost Build]: uses a variant of Perforce's Jam [Cmake]: [http://www.perforce.com/jam/jam.html%|%Jam]: [makepp - Make++]: a GNU-Make compatible replacement written in Perl [http://rake.rubyforge.org/%|%Rake]: written in [Ruby] ,provides a [domain-specific language] intended as an alternative for ''make'' [http://www.scons.org/%|%SCons]: [Python] based, powerful but complex [ant]: popular in the [Java] community ** Tcl Alternatives ** '''top 3''': [bras]: [smake]: [tmk]: '''full list': [Rivet]'s Aardvark: [A Little Make Replacement]: [another make replacement]: [bras]: [make library]: [smake]: [tabs]: [tclmake]: [tcmake - yet another make replacement]: [tmk]: [[Should we mention Ant, either on the basis of dwelton's connections, or because of Tcl/Java?]] [[Only if someone out there is really using Ant with Tcl and has some info online some place regarding the use of the app]]: [http://github.com/mildred/TBuild%|%TBuild]: A small [Tcl] extension ** See Also ** [gnu]: [MaMa]: [Mkdepend]: [PADE]: [PVM]: [tmk]: [UltraMake] ** Tools ** [http://bashdb.sourceforge.net/remake]: a debugger for `make`. [TEA3]: leverages ''make'' ** Reading ** [http://web.archive.org/web/20070702131752/http://www.ddj.com/dept/debug/197003338%|%Debuggin Makefiles] ,John Graham Cumming , 2007-02-05: valuable tips on coercing Make to introspect. [https://web.archive.org/web/20080609172425/http://www.unixreview.com/documents/s=9900/ur0510m/%|%Regular Expressions: Getting Started with SCons] ,Miki Tebeka and [Cameron Laird] ,2005-10: includes a critique of ''make'' [http://www.onlamp.com/pub/a/onlamp/2004/11/18/gnumake_3e.html%|%make: The Evolution and Alternatives] ,Andy Oram ,2004-11-18: ** Description ** '''make''' scripts describe '''targets''': files that make should keep up-to-date '''dependencies''': files that the various '''targets''' depend on. '''recipes''': each recipe is a sequence of actions to take to ''make'' a target Make uses a target's file timestamp and its dependency information to determine when it should be made or re-made. Traditionally, on [Unix], the [make] command is used to combine pieces of source, transform it into a state suitable for installation, and then actually installing the resulting files into the final destination directories. Where programs are deployed in source form (as opposed to executables), the issue of how to build either the applications themselves, or the tools needed to build the application becomes a '''[deployment]''' issue. Sometimes you need something simple to ''bootstrap'' your application stack, or you rely on a relatively standard ''tool chain'' that will let you build your tools. Sometimes that means following a ''least common denominator'' notion of tools, often making the assumption about a [Unix]-like operating system with [C] compiler. <> Application | Dev. Tools