| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] | 
shell FunctionThe shell function is unlike any other function other than the
wildcard function
(see section The Function wildcard) 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 (see section 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 (see section The Two Flavors of Variables).
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).
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | 
 
  This document was generated by Davide Tacchella on November 3, 2010 using texi2html 1.82.