Next: Configuration Files, Previous: Output, Up: Setup
configureは,自分が行なっていることが全部分かるように設計されてい ますが,隠されている従属物も実際にはあります.それは, config.statusです.configureはシステムの調査を担当していま すが,configureの結果を基に適切な動作を実際に引き受けるのは, config.statusです.config.statusのほとんどの典型的な作業は, ファイルを実際に作成することです.
このセクションでは,実際に何かを作成する基本的な四つのマクロの一般的な動
作を説明します.それらは,AC_CONFIG_FILES
,
AC_CONFIG_HEADERS
,AC_CONFIG_COMMANDS
,そして
AC_CONFIG_LINKS
です.それらは全て以下のものが原型となっています.
AC_CONFIG_FOOS(tag..., [commands], [init-cmds])
ここでの引数は,以下のとおりです.
tagsとして,リテラルを使用することを勧めます.特に,以下は避けた方 が良いでしょう.
... && my_foos="$my_foos fooo" ... && my_foos="$my_foos foooo" AC_CONFIG_FOOS($my_foos)
この代わりに以下のようにしてください.
... && AC_CONFIG_FOOS(fooo) ... && AC_CONFIG_FOOS(foooo)
マクロAC_CONFIG_FILES
とAC_CONFIG_HEADERS
は,特別な
tagを使用します.それらは,‘output’や
‘output:inputs’にすることが可能です.ファイル
outputは,そのテンプレートinputsから実際に作成されます(デフォ
ルトは‘output.in’).
例えば,‘AC_CONFIG_FILES(Makefile:boiler/top.mk:boiler/bot.mk)’は, boiler/top.mkとboiler/bot.mkを繋げたものに,出力変数を展開 したMakefileを作成するよう要求します.
特殊な値‘-’は,outputで使用されているときは標準出力を, inputsで使用されているときは標準入力を示すために使用されます.おそ らくconfigure.acでこれを使用する必要はほとんど無いと思いますが, ./config.statusのコマンドラインインターフェースを使用しているとき は便利でしょう.詳細は,config.status Invocation,を参照してくださ い.
inputsは,絶対パスまたは相対パスを用いたファイル名が可能です.後者
の場合,それは最初にビルドツリーで探され,その後でソースツリーで探されま
す.
configureの実行中に設定される変数は,ここでは利用不可能 です.それらを最初にinit-cmdsで設定する必要があります.それにもか かわらず,以下の変数は前もって求められます.
srcdir
ac_top_srcdir
ac_top_builddir
ac_srcdir
現在の(current)ディレクトリは,tagsの一部の入力が含まれるディ レクトリ(または疑似ディレクトリ)を参照します.例えば以下を実行したとしま す.
AC_CONFIG_COMMANDS([deep/dir/out:in/in.in], [...], [...])
--srcdir=../packageを用いると,以下の値が生成されます.
# Argument of --srcdir srcdir='../package' # Reversing deep/dir ac_top_builddir='../../' # Concatenation of $ac_top_builddir and srcdir ac_top_srcdir='../../../package' # Concatenation of $ac_top_srcdir and deep/dir ac_srcdir='../../../package/deep/dir'
‘in/in.in’とは無関係です.
var
の値として出力されます.init-cmdsは通常,commands
を実行するために必要な同じ変数をconfig.statusに与えるために,
configureで使用されます.
変数名では特に注意すべきです.すべてのinit-cmdsは同じ名前空間を共 有し,それぞれ予測できない方法で上書きされるかもしれません.残念です ...
当然ですが,すべてのこれらのマクロは,異なるtagを用いると,何回で も呼び出すことが可能です!