以下の変数は,パッケージがインストールされる場所を指定します.詳細は, Variables for Installation Directoriesを参照してください.これら の変数を使用するときとその方法の詳細は,このセクションの終りを参照してく ださい.
アーキテクチャに依存するファイルをインストールするプレフィクスです.デフォ ルトはprefixと同じです.exec_prefixにいろいろなものを直接イ ンストールすることは避けた方が良いでしょう.しかし,アーキテクチャに依存 するファイルを含むディレクトリに対するデフォルト値は,exec_prefix から相対的なものにすべきです.
全てのファイルに対する共通のインストールプレフィクスです. exec_prefixが異なる値で定義されている場合,prefixはアーキテ クチャ非依存ファイルに対してのみ使用されます.
これらの変数のほとんどは,prefixやexec_prefixに依存する値
になります.ディレクトリ変数の出力値が展開されないように考慮されています.
典型的な例として,`@datadir@'は,`/usr/local/share' ではなく
`${prefix}/share'に置換されます.
以下の動作は,GNU coding standardsで示されれていて,ユーザが実 行時にそうなるようになっています.
これらの機能をサポートするために,datadirがprefixの現在の
値に依存する`${prefix}/share'として定義されたままになっていること
が重要です.
当然のことですが,これらの変数をMakefilesで使用すべきではありませ
ん.例えば,configureでdatadirを評価する代わりに,
Makefileで,例えば`AC_DEFINE_UNQUOTED(DATADIR, "$datadir")'
としてハードコードする場合は,`-DDATADIR="$(datadir)"'を
CPPFLAGSに加えるべきです.
同様に,datadirとその仲間を,シェルスクリプトやその他のファイルで
置換するために,AC_OUTPUT_FILESに頼るべきではなく,その代わりに
makeにその置換を行なわせてください.例えば,Autoconfは
`.in'で終るシェルスクリプトのテンプレートを配布していて,以下のよう
なMakefileの一部を使用しています.
edit = sed \
-e 's,@datadir\@,$(pkgdatadir),g' \
-e 's,@prefix\@,$(prefix),g'
autoconf: Makefile $(srcdir)/autoconf.in
rm -f autoconf autoconf.tmp
$(edit) $(srcdir)/autoconf.in >autoconf.tmp
chmod +x autoconf.tmp
mv autoconf.tmp autoconf
autoheader: Makefile $(srcdir)/autoheader.in
rm -f autoheader autoheader.tmp
$(edit) $(srcdir)/autoconf.in >autoheader.tmp
chmod +x autoheader.tmp
mv autoheader.tmp autoheader
注目すべきことがいくつかあります.
editは,コンフィグレーション特有の値(prefix等)に依存し,
VERSIONやそれの以前のものには依存しない値を使用するので,出力は
configure.acではなくMakefileに依存します.
autoconf autoheader: Makefile
.in:
rm -f $@ $@.tmp
$(edit) $< >$@.tmp
chmod +x $@.tmp
mv $@.tmp $@
詳細は,See Limitations of Make.