(make.info) Shell Function
Info Catalog
(make.info) Origin Function
(make.info) Functions
(make.info) Make Control Functions
The `shell' Function
====================
The `shell' function is unlike any other function except 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 an argument that is a shell command and returns the
output of the command. The only processing `make' does on the result,
before substituting it into the surrounding text, is to convert each
newline or carriage-return / newline pair to a single space. It also
removes the trailing (carriage-return and) newline, if it's the last
thing in the result.
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)'.
Info Catalog
(make.info) Origin Function
(make.info) Functions
(make.info) Make Control Functions
automatically generated by
info2html