Appendix A Quick Reference
This appendix summarizes the directives, text manipulation functions,
and special variables which GNU make
understands.
See Special Targets, Catalogue of Implicit Rules,
and Summary of Options,
for other summaries.
Here is a summary of the directives GNU make
recognizes:
define
variableendef
-
Define a multi-line, recursively-expanded variable.
See Sequences.
ifdef
variableifndef
variableifeq (
a,
b)
ifeq "
a" "
b"
ifeq '
a' '
b'
ifneq (
a,
b)
ifneq "
a" "
b"
ifneq '
a' '
b'
else
endif
-
Conditionally evaluate part of the makefile.
See Conditionals.
include
file-include
filesinclude
file-
Include another makefile.
See Including Other Makefiles.
override
variable =
valueoverride
variable :=
valueoverride
variable +=
valueoverride
variable ?=
valueoverride define
variableendef
-
Define a variable, overriding any previous definition, even one from
the command line.
See The override
Directive.
export
-
Tell
make
to export all variables to child processes by default.
See Communicating Variables to a Sub-make
.
export
variableexport
variable =
valueexport
variable :=
valueexport
variable +=
valueexport
variable ?=
valueunexport
variable- Tell
make
whether or not to export a particular variable to child
processes.
See Communicating Variables to a Sub-make
.
vpath
pattern path- Specify a search path for files matching a ‘%’ pattern.
See The vpath
Directive.
vpath
pattern- Remove all search paths previously specified for pattern.
vpath
- Remove all search paths previously specified in any
vpath
directive.
Here is a summary of the built-in functions (see Functions):
$(subst
from,
to,
text)
- Replace from with to in text.
See Functions for String Substitution and Analysis.
$(patsubst
pattern,
replacement,
text)
- Replace words matching pattern with replacement in text.
See Functions for String Substitution and Analysis.
$(strip
string)
- Remove excess whitespace characters from string.
See Functions for String Substitution and Analysis.
$(findstring
find,
text)
- Locate find in text.
See Functions for String Substitution and Analysis.
$(filter
pattern...,
text)
- Select words in text that match one of the pattern words.
See Functions for String Substitution and Analysis.
$(filter-out
pattern...,
text)
- Select words in text that do not match any of the pattern words.
See Functions for String Substitution and Analysis.
$(sort
list)
- Sort the words in list lexicographically, removing duplicates.
See Functions for String Substitution and Analysis.
$(word
n,
text)
- Extract the nth word (one-origin) of text.
See Functions for String Substitution and Analysis.
$(words
text)
- Count the number of words in text.
See Functions for String Substitution and Analysis.
$(wordlist
s,
e,
text)
- Returns the list of words in text from s to e.
See Functions for String Substitution and Analysis.
$(firstword
names...)
- Extract the first word of names.
See Functions for String Substitution and Analysis.
$(lastword
names...)
- Extract the last word of names.
See Functions for String Substitution and Analysis.
$(dir
names...)
- Extract the directory part of each file name.
See Functions for File Names.
$(notdir
names...)
- Extract the non-directory part of each file name.
See Functions for File Names.
$(suffix
names...)
- Extract the suffix (the last ‘.’ and following characters) of each file name.
See Functions for File Names.
$(basename
names...)
- Extract the base name (name without suffix) of each file name.
See Functions for File Names.
$(addsuffix
suffix,
names...)
- Append suffix to each word in names.
See Functions for File Names.
$(addprefix
prefix,
names...)
- Prepend prefix to each word in names.
See Functions for File Names.
$(join
list1,
list2)
- Join two parallel lists of words.
See Functions for File Names.
$(wildcard
pattern...)
- Find file names matching a shell file name pattern (not a
‘%’ pattern).
See The Function wildcard
.
$(realpath
names...)
- For each file name in names, expand to an absolute name that
does not contain any
.
, ..
, nor symlinks.
See Functions for File Names.
$(abspath
names...)
- For each file name in names, expand to an absolute name that
does not contain any
.
or ..
components, but preserves
symlinks.
See Functions for File Names.
$(error
text...)
-
When this function is evaluated,
make
generates a fatal error
with the message text.
See Functions That Control Make.
$(warning
text...)
-
When this function is evaluated,
make
generates a warning with
the message text.
See Functions That Control Make.
$(shell
command)
-
Execute a shell command and return its output.
See The shell
Function.
$(origin
variable)
-
Return a string describing how the
make
variable variable was
defined.
See The origin
Function.
$(flavor
variable)
-
Return a string describing the flavor of the
make
variable
variable.
See The flavor
Function.
$(foreach
var,
words,
text)
-
Evaluate text with var bound to each word in words,
and concatenate the results.
See The foreach
Function.
$(call
var,
param,...)
-
Evaluate the variable var replacing any references to
$(1)
,
$(2)
with the first, second, etc. param values.
See The call
Function.
$(eval
text)
-
Evaluate text then read the results as makefile commands.
Expands to the empty string.
See The eval
Function.
$(value
var)
-
Evaluates to the contents of the variable var, with no expansion
performed on it.
See The value
Function.
Here is a summary of the automatic variables.
See Automatic Variables,
for full information.
$@
- The file name of the target.
$%
- The target member name, when the target is an archive member.
$<
- The name of the first prerequisite.
$?
- The names of all the prerequisites that are
newer than the target, with spaces between them.
For prerequisites which are archive members, only
the member named is used (see Archives).
$^
$+
- The names of all the prerequisites, with spaces between them. For
prerequisites which are archive members, only the member named is used
(see Archives). The value of
$^
omits duplicate
prerequisites, while $+
retains them and preserves their order.
$*
- The stem with which an implicit rule matches
(see How Patterns Match).
$(@D)
$(@F)
- The directory part and the file-within-directory part of
$@
.
$(*D)
$(*F)
- The directory part and the file-within-directory part of
$*
.
$(%D)
$(%F)
- The directory part and the file-within-directory part of
$%
.
$(<D)
$(<F)
- The directory part and the file-within-directory part of
$<
.
$(^D)
$(^F)
- The directory part and the file-within-directory part of
$^
.
$(+D)
$(+F)
- The directory part and the file-within-directory part of
$+
.
$(?D)
$(?F)
- The directory part and the file-within-directory part of
$?
.
These variables are used specially by GNU make
:
MAKEFILES
-
Makefiles to be read on every invocation of
make
.
See The Variable MAKEFILES
.
VPATH
-
Directory search path for files not found in the current directory.
See VPATH
Search Path for All Prerequisites.
SHELL
-
The name of the system default command interpreter, usually /bin/sh.
You can set
SHELL
in the makefile to change the shell used to run
commands. See Command Execution. The SHELL
variable is handled specially when importing from and exporting to the
environment. See Choosing the Shell.
MAKESHELL
-
On MS-DOS only, the name of the command interpreter that is to be used
by
make
. This value takes precedence over the value of
SHELL
. See MAKESHELL variable.
MAKE
-
The name with which
make
was invoked.
Using this variable in commands has special meaning.
See How the MAKE
Variable Works.
MAKELEVEL
-
The number of levels of recursion (sub-
make
s).
See Variables/Recursion.
MAKEFLAGS
-
The flags given to
make
. You can set this in the environment or
a makefile to set flags.
See Communicating Options to a Sub-make
.
It is never appropriate to use MAKEFLAGS
directly on a
command line: its contents may not be quoted correctly for use in the
shell. Always allow recursive make
's to obtain these values
through the environment from its parent.
MAKECMDGOALS
-
The targets given to
make
on the command line. Setting this
variable has no effect on the operation of make
.
See Arguments to Specify the Goals.
CURDIR
-
Set to the pathname of the current working directory (after all
-C
options are processed, if any). Setting this variable has no
effect on the operation of make
.
See Recursive Use of make
.
SUFFIXES
-
The default list of suffixes before
make
reads any makefiles.
.LIBPATTERNS
- Defines the naming of the libraries
make
searches for, and their
order.
See Directory Search for Link Libraries.