|
3.2 Files generated by configure
After you have invoked `configure', you will discover a number of
generated files in your build tree. The build directory structure
created by `configure' and the number of files will vary from
package to package. Each of the generated files are described below and
their relationships are shown in C. Generated File Dependencies:
- `config.cache'
- `configure' can cache the results of system tests that have been
performed to speed up subsequent tests. This file contains the cache
data and is a plain text file that can be hand-modified or removed if
desired.
- `config.log'
- As `configure' runs, it outputs a message describing each test it
performs and the result of each test. There is substantially more
output produced by the shell and utilities that `configure'
invokes, but it is hidden from the user to keep the output
understandable. The output is instead redirected to
`config.log'. This file is the first place to look when
`configure' goes hay-wire or a test produces a nonsense result. A
common scenario is that `configure', when run on a Solaris system,
will tell you that it was unable to find a working C compiler. An
examination of `config.log' will show that Solaris' default
`/usr/ucb/cc' is a program that informs the user that the optional
C compiler is not installed.
- `config.status'
- `configure' generates a shell script called `config.status'
that may be used to recreate the current configuration. That is, all
generated files will be regenerated. This script can also be used to
re-run `configure' if the `--recheck' option is given.
- `config.h'
- Many packages that use `configure' are written in C or C++. Some
of the tests that `configure' runs involve examining variability in
the C and C++ programming languages and implementations thereof. So
that source code can programmatically deal with these differences,
#define preprocessor directives can be optionally placed in a
config header, usually called `config.h', as
`configure' runs. Source files may then include the
`config.h' file and act accordingly:
|
#if HAVE_CONFIG_H
# include <config.h>
#endif /* HAVE_CONFIG_H */
#if HAVE_UNISTD_H
# include <unistd.h>
#endif /* HAVE_UNISTD_H */
|
We recommend always using a config header.
- `Makefile'
- One of the common functions of `configure' is to generate
`Makefile's and other files. As it has been stressed, a
`Makefile' is just a file often generated by `configure' from
a corresponding input file (usually called `Makefile.in'). The
following section will describe how you can use
make to
process this `Makefile'. There are other cases where generating
files in this way can be helpful. For instance, a Java developer might
wish to make use of a `defs.java' file generated from
`defs.java.in'.
|