GNU make - A. Quick Reference

Go to the first, previous, next, last section, table of contents.

# A. Quick Reference

This appendix summarizes the directives, text manipulation functions, and special variables which GNU `make` understands. See section 4.7 Special Built-in Target Names, section 10.2 Catalogue of Implicit Rules, and section 9.7 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.
  See section 5.7 Defining Canned Command 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.
  See section 7. Conditional Parts of Makefiles.
`include file`
  Include another makefile.
  See section 3.3 Including Other Makefiles.
`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.
  See section 6.7 The `override` Directive.
`export`
  Tell `make` to export all variables to child processes by default.
  See section 5.6.2 Communicating Variables to a Sub-`make`.
`export variable`
`export variable = value`
`export variable := value`
`export variable += value`
`unexport variable`
  Tell `make` whether or not to export a particular variable to child processes.
  See section 5.6.2 Communicating Variables to a Sub-`make`.
`vpath pattern path`
  Specify a search path for files matching a ``%'` pattern.
  See section 4.3.2 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 (see section 8. Functions for Transforming Text):

`$(subst from,to,text)`
  Replace from with to in text.
  See section 8.2 Functions for String Substitution and Analysis.
`$(patsubst pattern,replacement,text)`
  Replace words matching pattern with replacement in text.
  See section 8.2 Functions for String Substitution and Analysis.
`$(strip string)`
  Remove excess whitespace characters from string.
  See section 8.2 Functions for String Substitution and Analysis.
`$(findstring find,text)`
  Locate find in text.
  See section 8.2 Functions for String Substitution and Analysis.
`$(filter pattern...,text)`
  Select words in text that match one of the pattern words.
  See section 8.2 Functions for String Substitution and Analysis.
`$(filter-out pattern...,text)`
  Select words in text that do not match any of the pattern words.
  See section 8.2 Functions for String Substitution and Analysis.
`$(sort list)`
  Sort the words in list lexicographically, removing duplicates.
  See section 8.2 Functions for String Substitution and Analysis.
`$(dir names...)`
  Extract the directory part of each file name.
  See section 8.3 Functions for File Names.
`$(notdir names...)`
  Extract the non-directory part of each file name.
  See section 8.3 Functions for File Names.
`$(suffix names...)`
  Extract the suffix (the last ``.'` and following characters) of each file name.
  See section 8.3 Functions for File Names.
`$(basename names...)`
  Extract the base name (name without suffix) of each file name.
  See section 8.3 Functions for File Names.
`$(addsuffix suffix,names...)`
  Append suffix to each word in names.
  See section 8.3 Functions for File Names.
`$(addprefix prefix,names...)`
  Prepend prefix to each word in names.
  See section 8.3 Functions for File Names.
`$(join list1,list2)`
  Join two parallel lists of words.
  See section 8.3 Functions for File Names.
`$(word n,text)`
  Extract the nth word (one-origin) of text.
  See section 8.3 Functions for File Names.
`$(words text)`
  Count the number of words in text.
  See section 8.3 Functions for File Names.
`$(firstword names...)`
  Extract the first word of names.
  See section 8.3 Functions for File Names.
`$(wildcard pattern...)`
  Find file names matching a shell file name pattern (not a ``%'` pattern).
  See section 4.2.3 The Function `wildcard`.
`$(shell command)`
  Execute a shell command and return its output.
  See section 8.6 The `shell` Function.
`$(origin variable)`
  Return a string describing how the `make` variable variable was defined.
  See section 8.5 The `origin` Function.
`$(foreach var,words,text)`
  Evaluate text with var bound to each word in words, and concatenate the results.
  See section 8.4 The `foreach` Function.

Here is a summary of the automatic variables. See section 10.5.3 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 dependency.
`$?`
  The names of all the dependencies that are newer than the target, with spaces between them. For dependencies which are archive members, only the member named is used (see section 11. Using `make` to Update Archive Files).
`$^`
`$+`
  The names of all the dependencies, with spaces between them. For dependencies which are archive members, only the member named is used (see section 11. Using `make` to Update Archive Files). The value of `$^` omits duplicate dependencies, while `$+` retains them and preserves their order.
`$*`
  The stem with which an implicit rule matches (see section 10.5.4 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 section 3.4 The Variable `MAKEFILES`.
`VPATH`
  Directory search path for files not found in the current directory.
  See section 4.3.1 `VPATH`: Search Path for All Dependencies.
`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 section 5.2 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`. See section 5.2 Command Execution.
`MAKE`
  The name with which `make` was invoked. Using this variable in commands has special meaning. See section 5.6.1 How the `MAKE` Variable Works.
`MAKELEVEL`
  The number of levels of recursion (sub-`make`s).
  See section 5.6.2 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 section 5.6.3 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 section 9.2 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 section 5.6 Recursive Use of `make`.
`SUFFIXES`
  The default list of suffixes before `make` reads any makefiles.

Go to the first, previous, next, last section, table of contents.