DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(make.info.gz) Wildcard Function

Info Catalog (make.info.gz) Wildcard Pitfall (make.info.gz) Wildcards
 
 4.4.3 The Function `wildcard'
 -----------------------------
 
 Wildcard expansion happens automatically in rules.  But wildcard
 expansion does not normally take place when a variable is set, or
 inside the arguments of a function.  If you want to do wildcard
 expansion in such places, you need to use the `wildcard' function, like
 this:
 
      $(wildcard PATTERN...)
 
 This string, used anywhere in a makefile, is replaced by a
 space-separated list of names of existing files that match one of the
 given file name patterns.  If no existing file name matches a pattern,
 then that pattern is omitted from the output of the `wildcard'
 function.  Note that this is different from how unmatched wildcards
 behave in rules, where they are used verbatim rather than ignored
 ( Wildcard Pitfall).
 
    One use of the `wildcard' function is to get a list of all the C
 source files in a directory, like this:
 
      $(wildcard *.c)
 
    We can change the list of C source files into a list of object files
 by replacing the `.c' suffix with `.o' in the result, like this:
 
      $(patsubst %.c,%.o,$(wildcard *.c))
 
 (Here we have used another function, `patsubst'.   Functions for
 String Substitution and Analysis Text Functions.)
 
    Thus, a makefile to compile all C source files in the directory and
 then link them together could be written as follows:
 
      objects := $(patsubst %.c,%.o,$(wildcard *.c))
 
      foo : $(objects)
              cc -o foo $(objects)
 
 (This takes advantage of the implicit rule for compiling C programs, so
 there is no need to write explicit rules for compiling the files.
  The Two Flavors of Variables Flavors, for an explanation of
 `:=', which is a variant of `='.)
 
Info Catalog (make.info.gz) Wildcard Pitfall (make.info.gz) Wildcards
automatically generated byinfo2html