is a classic Unix
program to automate the building of software and documentation based on the specification of dependencies among files, on general rules for producing one type of file from another, and on specific rules for a particular piece of software or documentation. There are a number of implementations (with some differences), with the probably most widely-used one being GNU make
Non-Tcl Alternatives edit
- Boost Build
- uses a variant of Perforce's Jam
- Electric Cloud's emake
- by a company founded by JO
- OpenOffice Dmake
- irregular syntax, but is available for various platforms
- Also FT-Ja, a 100% compatible alternative.
- makepp - Make++
- a GNU-Make compatible replacement written in Perl
- written in Ruby, provides a domain-specific language intended as an alternative for make
- Python based, powerful but complex
- popular in the Java community
Tcl Alternatives edittop 3
- Rivet's Aardvark
- A Little Make Replacement
- another make replacement
- make library
- oommf's pimake
- stands for Platform-Independent Make.
- aims to be a high-level build system similar to autotools, cmake, qmake, scons, or jam
- tcmake - yet another make replacement
- [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]
- A small Tcl extension
- A commercial product for designing and diagramming build processes, and workflow in general. It can analyze and diagram an existing make-based workflow, or it can be used to design workflows via its Tcl-based DSL called "Flow Description Language". It also has a Tk-based GUI for workflow visualization.
See Also edit
- a debugger for make.
- leverages make
- Debugging Makefiles, John Graham Cumming, 2007-02-05
- valuable tips on coercing Make to introspect.
- Regular Expressions: Getting Started with SCons, Miki Tebeka and Cameron Laird, 2005-10
- includes a critique of make
- make: The Evolution and Alternatives, Andy Oram, 2004-11-18
- files that make should keep up-to-date
- files that the various targets depend on.
- 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
to append to a variable even if it is passed in on the command line:
override CPPFLAGS += -I.