|GNU Make Manual||www.imodulo.com · 2003-04-05|
|[ Software | Documentation | Contact ]|
shell function is unlike any other function except the
wildcard function (The Function
wildcard) in that it communicates with the world outside of
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). 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).
Here are some examples of the use of the
contents := $(shell cat foo)
contents to the contents of the file
foo, with a space (rather than a newline) separating each line.
files := $(shell echo *.c)
files to the expansion of
make is using a very strange shell, this has the same result as
|© Free Software Foundation, Inc.|