DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(make.info.gz) Selective Search

Info Catalog (make.info.gz) General Search (make.info.gz) Directory Search (make.info.gz) Search Algorithm
 
 4.5.2 The `vpath' Directive
 ---------------------------
 
 Similar to the `VPATH' variable, but more selective, is the `vpath'
 directive (note lower case), which allows you to specify a search path
 for a particular class of file names: those that match a particular
 pattern.  Thus you can supply certain search directories for one class
 of file names and other directories (or none) for other file names.
 
    There are three forms of the `vpath' directive:
 
 `vpath PATTERN DIRECTORIES'
      Specify the search path DIRECTORIES for file names that match
      PATTERN.
 
      The search path, DIRECTORIES, is a list of directories to be
      searched, separated by colons (semi-colons on MS-DOS and
      MS-Windows) or blanks, just like the search path used in the
      `VPATH' variable.
 
 `vpath PATTERN'
      Clear out the search path associated with PATTERN.
 
 `vpath'
      Clear all search paths previously specified with `vpath'
      directives.
 
    A `vpath' pattern is a string containing a `%' character.  The
 string must match the file name of a prerequisite that is being searched
 for, the `%' character matching any sequence of zero or more characters
 (as in pattern rules;  Defining and Redefining Pattern Rules
 Pattern Rules.).  For example, `%.h' matches files that end in `.h'.
 (If there is no `%', the pattern must match the prerequisite exactly,
 which is not useful very often.)
 
    `%' characters in a `vpath' directive's pattern can be quoted with
 preceding backslashes (`\').  Backslashes that would otherwise quote
 `%' characters can be quoted with more backslashes.  Backslashes that
 quote `%' characters or other backslashes are removed from the pattern
 before it is compared to file names.  Backslashes that are not in
 danger of quoting `%' characters go unmolested.
 
    When a prerequisite fails to exist in the current directory, if the
 PATTERN in a `vpath' directive matches the name of the prerequisite
 file, then the DIRECTORIES in that directive are searched just like
 (and before) the directories in the `VPATH' variable.
 
    For example,
 
      vpath %.h ../headers
 
 tells `make' to look for any prerequisite whose name ends in `.h' in
 the directory `../headers' if the file is not found in the current
 directory.
 
    If several `vpath' patterns match the prerequisite file's name, then
 `make' processes each matching `vpath' directive one by one, searching
 all the directories mentioned in each directive.  `make' handles
 multiple `vpath' directives in the order in which they appear in the
 makefile; multiple directives with the same pattern are independent of
 each other.
 
    Thus,
 
      vpath %.c foo
      vpath %   blish
      vpath %.c bar
 
 will look for a file ending in `.c' in `foo', then `blish', then `bar',
 while
 
      vpath %.c foo:bar
      vpath %   blish
 
 will look for a file ending in `.c' in `foo', then `bar', then `blish'.
 
Info Catalog (make.info.gz) General Search (make.info.gz) Directory Search (make.info.gz) Search Algorithm
automatically generated byinfo2html