manpagez: man pages & more
info make
Home | html | info | man

File: make.info,  Node: Last Resort,  Next: Suffix Rules,  Prev: Pattern Rules,  Up: Implicit Rules

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 (*note Match-Anything
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
recipe is used for all targets and prerequisites that have no recipe 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:

     %::
             touch $@

to cause all the source files needed (as prerequisites) to be created
automatically.

   You can instead define a recipe to be used for targets for which
there are no rules at all, even ones which don't specify recipes.  You
do this by writing a rule for the target '.DEFAULT'.  Such a rule's
recipe is 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 recipe or prerequisites:

     .DEFAULT:

the recipe previously stored for '.DEFAULT' is cleared.  Then 'make'
acts as if you had never defined '.DEFAULT' at all.

   If you do not want a target to get the recipe from a match-anything
pattern rule or '.DEFAULT', but you also do not want any recipe to be
run for the target, you can give it an empty recipe (*note Defining
Empty Recipes: Empty Recipes.).

   You can use a last-resort rule to override part of another makefile.
*Note Overriding Part of Another Makefile: Overriding Makefiles.

© manpagez.com 2000-2024
Individual documents may contain additional copyright information.