10.6 Defining Last-Resort Default Rules
You can define a last-resort implicit rule by writing a terminal
match-anything pattern rule with no prerequisites (see section 10.5.5 Match-Anything Pattern Rules). This is just like any other pattern rule; the only thing
special about it is that it will match any target. So such a rule's
commands are used for all targets and prerequisites that have no commands
of their own and for which no other implicit rule applies.
For example, when testing a makefile, you might not care if the source
files contain real data, only that they exist. Then you might do this:
to cause all the source files needed (as prerequisites) to be created
automatically.
You can instead define commands to be used for targets for which there
are no rules at all, even ones which don't specify commands. You do
this by writing a rule for the target .DEFAULT
. Such a rule's
commands are used for all prerequisites which do not appear as targets in
any explicit rule, and for which no implicit rule applies. Naturally,
there is no .DEFAULT
rule unless you write one.
If you use .DEFAULT
with no commands or prerequisites:
the commands previously stored for .DEFAULT
are cleared.
Then make
acts as if you had never defined .DEFAULT
at all.
If you do not want a target to get the commands from a match-anything
pattern rule or .DEFAULT
, but you also do not want any commands
to be run for the target, you can give it empty commands (see section Defining Empty Commands).
You can use a last-resort rule to override part of another makefile.
See section Overriding Part of Another Makefile.