(make.info)Rule Syntax


Next: Wildcards Prev: Rule Example Up: Rules

Rule Syntax
===========

   In general, a rule looks like this:

     TARGETS : DEPENDENCIES
             COMMAND
             ...

or like this:

     TARGETS : DEPENDENCIES ; COMMAND
             COMMAND
             ...

   The TARGETS are file names, separated by spaces.  Wildcard
characters may be used (*note Using Wildcard Characters in File Names:
Wildcards.) and a name of the form `A(M)' represents member M in
archive file A (Note: Archive Members as Targets.).
Usually there is only one target per rule, but occasionally there is a
reason to have more (Note: Multiple Targets in a Rule
Targets.).

   The COMMAND lines start with a tab character.  The first command may
appear on the line after the dependencies, with a tab character, or may
appear on the same line, with a semicolon.  Either way, the effect is
the same.  Note: Writing the Commands in Rules.

   Because dollar signs are used to start variable references, if you
really want a dollar sign in a rule you must write two of them, `$$'
(Note: How to Use Variables.).  You may split a long
line by inserting a backslash followed by a newline, but this is not
required, as `make' places no limit on the length of a line in a
makefile.

   A rule tells `make' two things: when the targets are out of date,
and how to update them when necessary.

   The criterion for being out of date is specified in terms of the
DEPENDENCIES, which consist of file names separated by spaces.
(Wildcards and archive members (Note: Archives.) are allowed here
too.) A target is out of date if it does not exist or if it is older
than any of the dependencies (by comparison of last-modification
times).  The idea is that the contents of the target file are computed
based on information in the dependencies, so if any of the dependencies
changes, the contents of the existing target file are no longer
necessarily valid.

   How to update is specified by COMMANDS.  These are lines to be
executed by the shell (normally `sh'), but with some extra features
(Note: Writing the Commands in Rules.).


automatically generated by info2www