(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