Next: Automatic Remaking Prev: Changed Directory Variables Up: Makefile Substitutions
4.8.4 Build Directories
You can support compiling a software package for several architectures
simultaneously from the same copy of the source code. The object files
for each architecture are kept in their own directory.
To support doing this, `make' uses the `VPATH' variable to find the
files that are in the source directory. GNU Make can do this. Most
other recent `make' programs can do this as well, though they may have
difficulties and it is often simpler to recommend GNU `make' (*note
VPATH and Make::). Older `make' programs do not support `VPATH'; when
using them, the source code must be in the same directory as the object
To support `VPATH', each `Makefile.in' should contain two lines that
srcdir = @srcdir@
VPATH = @srcdir@
Do not set `VPATH' to the value of another variable, for example
`VPATH = $(srcdir)', because some versions of `make' do not do variable
substitutions on the value of `VPATH'.
`configure' substitutes the correct value for `srcdir' when it
Do not use the `make' variable `$<', which expands to the file name
of the file in the source directory (found with `VPATH'), except in
implicit rules. (An implicit rule is one such as `.c.o', which tells
how to create a `.o' file from a `.c' file.) Some versions of `make'
do not set `$<' in explicit rules; they expand it to an empty value.
Instead, Make command lines should always refer to source files by
prefixing them with `$(srcdir)/'. For example:
automatically generated by info2www