[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
13 What Gets Cleaned
The GNU Makefile Standards specify a number of different clean rules. See Standard Targets for Users in The GNU Coding Standards.
Generally the files that can be cleaned are determined automatically by
Automake. Of course, Automake also recognizes some variables that can
be defined to specify additional files to clean. These variables are
MOSTLYCLEANFILES
, CLEANFILES
, DISTCLEANFILES
, and
MAINTAINERCLEANFILES
.
When cleaning involves more than deleting some hard-coded list of
files, it is also possible to supplement the cleaning rules with your
own commands. Simply define a rule for any of the
mostlyclean-local
, clean-local
, distclean-local
,
or maintainer-clean-local
targets (see section Extending Automake Rules). A common
case is deleting a directory, for instance, a directory created by the
test suite:
clean-local: -rm -rf testSubDir
Since make
allows only one set of rules for a given target,
a more extensible way of writing this is to use a separate target
listed as a dependency:
clean-local: clean-local-check .PHONY: clean-local-check clean-local-check: -rm -rf testSubDir
As the GNU Standards aren’t always explicit as to which files should be removed by which rule, we’ve adopted a heuristic that we believe was first formulated by François Pinard:
-
If
make
built it, and it is commonly something that one would want to rebuild (for instance, a ‘.o’ file), thenmostlyclean
should delete it. -
Otherwise, if
make
built it, thenclean
should delete it. -
If
configure
built it, thendistclean
should delete it. -
If the maintainer built it (for instance, a ‘.info’ file), then
maintainer-clean
should delete it. Howevermaintainer-clean
should not delete anything that needs to exist in order to run ‘./configure && make’.
We recommend that you follow this same set of heuristics in your ‘Makefile.am’.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on January 25, 2014 using texi2html 5.0.