以下の変数は,パッケージがインストールされる場所を指定します.詳細は, 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.