GNU `make'

Node:Quick Reference, Next:Error Messages, Previous:Makefile Conventions, Up:Top

## 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` variable``
`endef`
  Define a multi-line, recursively-expanded variable.
  See 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 Conditionals.
`include` file``
`-include` file``
`sinclude` file``
  Include another makefile.
  See 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.
  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`=` 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.
  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 text manipulation 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.
`$(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.
`$(word` n`,`text`)`
  Extract the nth word (one-origin) of text.
  See Functions for File Names.
`$(words` text`)`
  Count the number of words in text.
  See Functions for File Names.
`$(wordlist` s`,`e`,`text`)`
  Returns the list of words in text from s to e.
  See Functions for File Names.
`$(firstword` names`...)`
  Extract the first word of names.
  See Functions for File Names.
`$(wildcard` pattern`...)`
  Find file names matching a shell file name pattern (not a `%` pattern).
  See The Function `wildcard`.
`$(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.
`$(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.

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.
`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.