(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