Quick Reference
***************
This appendix summarizes the directives, text manipulation functions,
and special variables which GNU `make' understands. Note:Special
Targets, Note:Catalogue of Implicit Rules, and
Note:Summary of Options, for other summaries.
Here is a summary of the directives GNU `make' recognizes:
`define VARIABLE'
`endef'
Define a multi-line, recursively-expanded variable.
Note:Sequences.
`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.
Note:Conditionals.
`include FILE'
`-include FILE'
`sinclude FILE'
Include another makefile.
Note:Including Other Makefiles.
`override VARIABLE = VALUE'
`override VARIABLE := VALUE'
`override VARIABLE += VALUE'
`override VARIABLE ?= VALUE'
`override define VARIABLE'
`endef'
Define a variable, overriding any previous definition, even one
from the command line.
Note:The `override' Directive.
`export'
Tell `make' to export all variables to child processes by default.
Note:Communicating Variables to a Sub-`make'.
`export VARIABLE'
`export VARIABLE = VALUE'
`export VARIABLE := VALUE'
`export VARIABLE += VALUE'
`export VARIABLE ?= VALUE'
`unexport VARIABLE'
Tell `make' whether or not to export a particular variable to child
processes.
Note:Communicating Variables to a Sub-`make'.
`vpath PATTERN PATH'
Specify a search path for files matching a `%' pattern.
Note: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 text manipulation functions (Note:Functions):
`$(subst FROM,TO,TEXT)'
Replace FROM with TO in TEXT.
Note:Functions for String Substitution and Analysis.
`$(patsubst PATTERN,REPLACEMENT,TEXT)'
Replace words matching PATTERN with REPLACEMENT in TEXT.
Note:Functions for String Substitution and Analysis.
`$(strip STRING)'
Remove excess whitespace characters from STRING.
Note:Functions for String Substitution and Analysis.
`$(findstring FIND,TEXT)'
Locate FIND in TEXT.
Note:Functions for String Substitution and Analysis.
`$(filter PATTERN...,TEXT)'
Select words in TEXT that match one of the PATTERN words.
Note:Functions for String Substitution and Analysis.
`$(filter-out PATTERN...,TEXT)'
Select words in TEXT that _do not_ match any of the PATTERN words.
Note:Functions for String Substitution and Analysis.
`$(sort LIST)'
Sort the words in LIST lexicographically, removing duplicates.
Note:Functions for String Substitution and Analysis.
`$(dir NAMES...)'
Extract the directory part of each file name.
Note:Functions for File Names.
`$(notdir NAMES...)'
Extract the non-directory part of each file name.
Note:Functions for File Names.
`$(suffix NAMES...)'
Extract the suffix (the last `.' and following characters) of each
file name.
Note:Functions for File Names.
`$(basename NAMES...)'
Extract the base name (name without suffix) of each file name.
Note:Functions for File Names.
`$(addsuffix SUFFIX,NAMES...)'
Append SUFFIX to each word in NAMES.
Note:Functions for File Names.
`$(addprefix PREFIX,NAMES...)'
Prepend PREFIX to each word in NAMES.
Note:Functions for File Names.
`$(join LIST1,LIST2)'
Join two parallel lists of words.
Note:Functions for File Names.
`$(word N,TEXT)'
Extract the Nth word (one-origin) of TEXT.
Note:Functions for File Names.
`$(words TEXT)'
Count the number of words in TEXT.
Note:Functions for File Names.
`$(wordlist S,E,TEXT)'
Returns the list of words in TEXT from S to E.
Note:Functions for File Names.
`$(firstword NAMES...)'
Extract the first word of NAMES.
Note:Functions for File Names.
`$(wildcard PATTERN...)'
Find file names matching a shell file name pattern (_not_ a `%'
pattern).
Note:The Function `wildcard'.
`$(error TEXT...)'
When this function is evaluated, `make' generates a fatal error
with the message TEXT.
Note:Functions That Control Make.
`$(warning TEXT...)'
When this function is evaluated, `make' generates a warning with
the message TEXT.
Note:Functions That Control Make.
`$(shell COMMAND)'
Execute a shell command and return its output.
Note:The `shell' Function.
`$(origin VARIABLE)'
Return a string describing how the `make' variable VARIABLE was
defined.
Note:The `origin' Function.
`$(foreach VAR,WORDS,TEXT)'
Evaluate TEXT with VAR bound to each word in WORDS, and
concatenate the results.
Note:The `foreach' Function.
`$(call VAR,PARAM,...)'
Evaluate the variable VAR replacing any references to `$(1)',
`$(2)' with the first, second, etc. PARAM values.
Note:The `call' Function.
Here is a summary of the automatic variables. Note: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 (Note:Archives).
`$^'
`$+'
The names of all the prerequisites, with spaces between them. For
prerequisites which are archive members, only the member named is
used (Note:Archives). The value of `$^' omits duplicate
prerequisites, while `$+' retains them and preserves their order.
`$*'
The stem with which an implicit rule matches (Note: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'.
Note:The Variable `MAKEFILES'.
`VPATH'
Directory search path for files not found in the current directory.
Note:`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. Note:Command Execution.
`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'. Note:MAKESHELL variable.
`MAKE'
The name with which `make' was invoked. Using this variable in
commands has special meaning. Note:How the `MAKE' Variable
Works.
`MAKELEVEL'
The number of levels of recursion (sub-`make's).
Note:Variables/Recursion.
`MAKEFLAGS'
The flags given to `make'. You can set this in the environment or
a makefile to set flags.
Note: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'.
Note: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'.
Note: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.
Note:Directory Search for Link Libraries.