4.2 Rule Syntax
In general, a rule looks like this:
| targets : prerequisites
command
...
|
or like this:
| targets : prerequisites ; command
command
...
|
The targets are file names, separated by spaces. Wildcard
characters may be used (see section Using Wildcard Characters in File Names) and a name of the form `a(m)'
represents member m in archive file a
(see section Archive Members as Targets).
Usually there is only one
target per rule, but occasionally there is a reason to have more
(see section Multiple Targets in a Rule).
The command lines start with a tab character. The first command may
appear on the line after the prerequisites, with a tab character, or may
appear on the same line, with a semicolon. Either way, the effect is the
same. See section 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, `$$'
(see section 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
prerequisites, which consist of file names separated by spaces.
(Wildcards and archive members (see section 11. Using make
to Update Archive Files) are allowed here too.)
A target is out of date if it does not exist or if it is older than any
of the prerequisites (by comparison of last-modification times). The
idea is that the contents of the target file are computed based on
information in the prerequisites, so if any of the prerequisites 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
(see section Writing the Commands in Rules).