Next: Errors Generated by Make, Previous: Makefile Conventions, Up: GNU make
[Contents][Index]
This appendix summarizes the directives, text manipulation functions,
and special variables which GNU make
understands.
See Special Built-in Target Names, Catalogue of Built-In Rules,
and Summary of Options,
for other summaries.
Here is a summary of the directives GNU make
recognizes:
define variable
define variable =
define variable :=
define variable ::=
define variable :::=
define variable +=
define variable ?=
endef
Define multi-line variables.
See Defining Multi-Line Variables.
undefine variable
Undefining variables.
See Undefining Variables.
ifdef variable
ifndef variable
ifeq (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 Conditional Parts of Makefiles.
include file
-include file
sinclude file
Include another makefile.
See Including Other Makefiles.
override variable-assignment
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 variable
export variable-assignment
unexport variable
Tell make
whether or not to export a particular variable to child
processes.
See Communicating Variables to a Sub-make
.
private variable-assignment
Do not allow this variable assignment to be inherited by prerequisites.
See Suppressing Inheritance.
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 for Transforming Text):
$(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.
$(let var [var ...],words,text)
Evaluate text with the vars bound to the words in
words.
See The let
Function.
$(foreach var,words,text)
Evaluate text with var bound to each word in words,
and concatenate the results.
See The foreach
Function.
$(if condition,then-part[,else-part])
Evaluate the condition condition; if it’s non-empty substitute
the expansion of the then-part otherwise substitute the
expansion of the else-part.
See Functions for Conditionals.
$(or condition1[,condition2[,condition3…]])
Evaluate each condition conditionN one at a time; substitute the
first non-empty expansion. If all expansions are empty, substitute
the empty string.
See Functions for Conditionals.
$(and condition1[,condition2[,condition3…]])
Evaluate each condition conditionN one at a time; if any
expansion results in the empty string substitute the empty string. If
all expansions result in a non-empty string, substitute the expansion
of the last condition.
See Functions for Conditionals.
$(intcmp lhs,rhs[,lt-part[,eq-part[,gt-part]]])
Compare lhs and rhs numerically; substitute the expansion of
lt-part, eq-part, or gt-part depending on whether the
left-hand side is less-than, equal-to, or greater-than the right-hand
side, respectively.
See Functions for Conditionals.
$(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.
$(file op filename,text)
Expand the arguments, then open the file filename using mode
op and write text to that file.
See The file
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 named member is used (see Using make
to Update Archive Files).
$^
$+
The names of all the prerequisites, with spaces between them. For
prerequisites which are archive members, only the named member is used
(see Using make
to Update Archive Files). 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
recipes. See Recipe 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
recipes has special meaning. See How the
MAKE
Variable Works.
MAKE_VERSION
The built-in variable ‘MAKE_VERSION’ expands to the version
number of the GNU make
program.
MAKE_HOST
The built-in variable ‘MAKE_HOST’ expands to a string
representing the host that GNU make
was built to run on.
MAKELEVEL
The number of levels of recursion (sub-make
s).
See Communicating Variables to a Sub-make
.
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 in a
recipe 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.
GNUMAKEFLAGS
Other flags parsed by make
. You can set this in the environment or
a makefile to set make
command-line flags. GNU make
never sets this variable itself. This variable is only needed if
you’d like to set GNU make
-specific flags in a POSIX-compliant
makefile. This variable will be seen by GNU make
and ignored
by other make
implementations. It’s not needed if you only use
GNU make
; just use MAKEFLAGS
directly.
See Communicating Options to a Sub-make
.
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 absolute 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.
Next: Errors Generated by Make, Previous: Makefile Conventions, Up: GNU make
[Contents][Index]