(make.info.gz) Shell Function
Info Catalog
(make.info.gz) Flavor Function
(make.info.gz) Functions
(make.info.gz) Make Control Functions
8.11 The `shell' Function
=========================
The `shell' function is unlike any other function other than the
`wildcard' function ( The Function `wildcard' Wildcard Function.)
in that it communicates with the world outside of `make'.
The `shell' function performs the same function that backquotes
(``') perform in most shells: it does "command expansion". This means
that it takes as an argument a shell command and evaluates to the
output of the command. The only processing `make' does on the result
is to convert each newline (or carriage-return / newline pair) to a
single space. If there is a trailing (carriage-return and) newline it
will simply be removed.
The commands run by calls to the `shell' function are run when the
function calls are expanded ( How `make' Reads a Makefile Reading
Makefiles.). Because this function involves spawning a new shell, you
should carefully consider the performance implications of using the
`shell' function within recursively expanded variables vs. simply
expanded variables ( The Two Flavors of Variables Flavors.).
Here are some examples of the use of the `shell' function:
contents := $(shell cat foo)
sets `contents' to the contents of the file `foo', with a space (rather
than a newline) separating each line.
files := $(shell echo *.c)
sets `files' to the expansion of `*.c'. Unless `make' is using a very
strange shell, this has the same result as `$(wildcard *.c)' (as long
as at least one `.c' file exists).
Info Catalog
(make.info.gz) Flavor Function
(make.info.gz) Functions
(make.info.gz) Make Control Functions
automatically generated byinfo2html