| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
4.9 Special Built-in Target Names
Certain names have special meanings if they appear as targets.
.PHONY-
The prerequisites of the special target
.PHONYare considered to be phony targets. When it is time to consider such a target,makewill run its recipe unconditionally, regardless of whether a file with that name exists or what its last-modification time is. See section Phony Targets. .SUFFIXES-
The prerequisites of the special target
.SUFFIXESare the list of suffixes to be used in checking for suffix rules. See section Old-Fashioned Suffix Rules. .DEFAULT-
The recipe specified for
.DEFAULTis used for any target for which no rules are found (either explicit rules or implicit rules). See section Defining Last-Resort Default Rules. If a.DEFAULTrecipe is specified, every file mentioned as a prerequisite, but not as a target in a rule, will have that recipe executed on its behalf. See section Implicit Rule Search Algorithm. .PRECIOUS-
The targets which
.PRECIOUSdepends on are given the following special treatment: ifmakeis killed or interrupted during the execution of their recipes, the target is not deleted. See section Interrupting or Killingmake. Also, if the target is an intermediate file, it will not be deleted after it is no longer needed, as is normally done. See section Chains of Implicit Rules. In this latter respect it overlaps with the.SECONDARYspecial target.You can also list the target pattern of an implicit rule (such as ‘%.o’) as a prerequisite file of the special target
.PRECIOUSto preserve intermediate files created by rules whose target patterns match that file’s name. .INTERMEDIATE-
The targets which
.INTERMEDIATEdepends on are treated as intermediate files. See section Chains of Implicit Rules..INTERMEDIATEwith no prerequisites has no effect. .SECONDARY-
The targets which
.SECONDARYdepends on are treated as intermediate files, except that they are never automatically deleted. See section Chains of Implicit Rules..SECONDARYwith no prerequisites causes all targets to be treated as secondary (i.e., no target is removed because it is considered intermediate). .SECONDEXPANSION-
If
.SECONDEXPANSIONis mentioned as a target anywhere in the makefile, then all prerequisite lists defined after it appears will be expanded a second time after all makefiles have been read in. See section Secondary Expansion. .DELETE_ON_ERROR-
If
.DELETE_ON_ERRORis mentioned as a target anywhere in the makefile, thenmakewill delete the target of a rule if it has changed and its recipe exits with a nonzero exit status, just as it does when it receives a signal. See section Errors in Recipes. .IGNORE-
If you specify prerequisites for
.IGNORE, thenmakewill ignore errors in execution of the recipe for those particular files. The recipe for.IGNORE(if any) is ignored.If mentioned as a target with no prerequisites,
.IGNOREsays to ignore errors in execution of recipes for all files. This usage of ‘.IGNORE’ is supported only for historical compatibility. Since this affects every recipe in the makefile, it is not very useful; we recommend you use the more selective ways to ignore errors in specific recipes. See section Errors in Recipes. .LOW_RESOLUTION_TIME-
If you specify prerequisites for
.LOW_RESOLUTION_TIME,makeassumes that these files are created by commands that generate low resolution time stamps. The recipe for the.LOW_RESOLUTION_TIMEtarget are ignored.The high resolution file time stamps of many modern file systems lessen the chance of
makeincorrectly concluding that a file is up to date. Unfortunately, some hosts do not provide a way to set a high resolution file time stamp, so commands like ‘cp -p’ that explicitly set a file’s time stamp must discard its sub-second part. If a file is created by such a command, you should list it as a prerequisite of.LOW_RESOLUTION_TIMEso thatmakedoes not mistakenly conclude that the file is out of date. For example:.LOW_RESOLUTION_TIME: dst dst: src cp -p src dstSince ‘cp -p’ discards the sub-second part of ‘src’’s time stamp, ‘dst’ is typically slightly older than ‘src’ even when it is up to date. The
.LOW_RESOLUTION_TIMEline causesmaketo consider ‘dst’ to be up to date if its time stamp is at the start of the same second that ‘src’’s time stamp is in.Due to a limitation of the archive format, archive member time stamps are always low resolution. You need not list archive members as prerequisites of
.LOW_RESOLUTION_TIME, asmakedoes this automatically. .SILENT-
If you specify prerequisites for
.SILENT, thenmakewill not print the recipe used to remake those particular files before executing them. The recipe for.SILENTis ignored.If mentioned as a target with no prerequisites,
.SILENTsays not to print any recipes before executing them. This usage of ‘.SILENT’ is supported only for historical compatibility. We recommend you use the more selective ways to silence specific recipes. See section Recipe Echoing. If you want to silence all recipes for a particular run ofmake, use the ‘-s’ or ‘--silent’ option (see section Summary of Options). .EXPORT_ALL_VARIABLES-
Simply by being mentioned as a target, this tells
maketo export all variables to child processes by default. See section Communicating Variables to a Sub-make. .NOTPARALLEL-
If
.NOTPARALLELis mentioned as a target, then this invocation ofmakewill be run serially, even if the ‘-j’ option is given. Any recursively invokedmakecommand will still run recipes in parallel (unless its makefile also contains this target). Any prerequisites on this target are ignored. .ONESHELL-
If
.ONESHELLis mentioned as a target, then when a target is built all lines of the recipe will be given to a single invocation of the shell rather than each line being invoked separately (see section Recipe Execution). .POSIX-
If
.POSIXis mentioned as a target, then the makefile will be parsed and run in POSIX-conforming mode. This does not mean that only POSIX-conforming makefiles will be accepted: all advanced GNUmakefeatures are still available. Rather, this target causesmaketo behave as required by POSIX in those areas wheremake’s default behavior differs.In particular, if this target is mentioned then recipes will be invoked as if the shell had been passed the
-eflag: the first failing command in a recipe will cause the recipe to fail immediately.
Any defined implicit rule suffix also counts as a special target if it appears as a target, and so does the concatenation of two suffixes, such as ‘.c.o’. These targets are suffix rules, an obsolete way of defining implicit rules (but a way still widely used). In principle, any target name could be special in this way if you break it in two and add both pieces to the suffix list. In practice, suffixes normally begin with ‘.’, so these special target names also begin with ‘.’. See section Old-Fashioned Suffix Rules.
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on October 10, 2013 using texi2html 5.0.
