Copyright (C) 2000-2012 |
GNU Info (autoconf.info)Installation Directory VariablesInstallation Directory Variables -------------------------------- The following variables specify the directories where the package will be installed, see *Note Variables for Installation Directories: (standards)Directory Variables, for more information. See the end of this section for details on when and how to use these variables. - Variable: bindir The directory for installing executables that users run. - Variable: datadir The directory for installing read-only architecture-independent data. - Variable: exec_prefix The installation prefix for architecture-dependent files. By default it's the same as PREFIX. You should avoid installing anything directly to EXEC_PREFIX. However, the default value for directories containing architecture-dependent files should be relative to EXEC_PREFIX. - Variable: includedir The directory for installing C header files. - Variable: infodir The directory for installing documentation in Info format. - Variable: libdir The directory for installing object code libraries. - Variable: libexecdir The directory for installing executables that other programs run. - Variable: localstatedir The directory for installing modifiable single-machine data. - Variable: mandir The top-level directory for installing documentation in man format. - Variable: oldincludedir The directory for installing C header files for non-gcc compilers. - Variable: prefix The common installation prefix for all files. If EXEC_PREFIX is defined to a different value, PREFIX is used only for architecture-independent files. - Variable: sbindir The directory for installing executables that system administrators run. - Variable: sharedstatedir The directory for installing modifiable architecture-independent data. - Variable: sysconfdir The directory for installing read-only single-machine data. Most of these variables have values that rely on `prefix' or `exec_prefix'. It is deliberate that the directory output variables keep them unexpanded: typically `@datadir@' will be replaced by `${prefix}/share', not `/usr/local/share'. This behavior is mandated by the GNU coding standards, so that when the user runs: `make' she can still specify a different prefix from the one specified to `configure', in which case, if needed, the package shall hard code dependencies corresponding to the make-specified prefix. `make install' she can specify a different installation location, in which case the package _must_ still depend on the location which was compiled in (i.e., never recompile when `make install' is run). This is an extremely important feature, as many people may decide to install all the files of a package grouped together, and then install links from the final locations to there. In order to support these features, it is essential that `datadir' remains being defined as `${prefix}/share' to depend upon the current value of `prefix'. A corollary is that you should not use these variables except in Makefiles. For instance, instead of trying to evaluate `datadir' in `configure' and hardcoding it in Makefiles using e.g. `AC_DEFINE_UNQUOTED(DATADIR, "$datadir")', you should add `-DDATADIR="$(datadir)"' to your `CPPFLAGS'. Similarly you should not rely on `AC_OUTPUT_FILES' to replace `datadir' and friends in your shell scripts and other files, rather let `make' manage their replacement. For instance Autoconf ships templates of its shell scripts ending with `.sh', and uses this Makefile snippet: .sh: rm -f $@ $@.tmp sed 's,@datadir\@,$(pkgdatadir),g' $< >$@.tmp chmod +x $@.tmp mv $@.tmp $@ Three things are noteworthy: `@datadir\@' The backslash prevents `configure' from replacing `@datadir@' in the sed expression itself. `$(pkgdatadir)' Don't use `@pkgdatadir@'! Use the matching makefile variable instead. `,' Don't use `/' in the sed expression(s) since most probably the variables you use, such as `$(pkgdatadir)', will contain some. automatically generated by info2www version 1.2.2.9 |