[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Automakeは,`Makefile',`configure',そして `Makefile.in'のようなその他の派生するファイルを,自動的にリビルド するルールを生成します.
`configure.ac'でAM_MAINTAINER_MODE
を使用している場合,これ
らの自動的なリビルドのルールは,管理者モードでのみ利用可能になります.
`.m4'ファイルを探す場所を伝えるために,-I
のような引数を用
いてaclocal
実行する必要があることもあります.make
が自動
的にaclocal
を実行するときもあるので,これらの引数を指定する方法
が必要になります.ACLOCAL_AMFLAGS
を定義することで,こうすること
が可能になります.これは,aclocal
に渡す引数をそのまま保持してい
ます.この変数は,最上位の`Makefile.am'でのみ役に立ちます.
追加の依存性を用いて`configure'や`config.status'をリビルドす
るルールを補足すると便利なときもあります.変数
CONFIGURE_DEPENDENCIES
とCONFIG_STATUS_DEPENDENCIES
をこれ
らの追加の依存性をリストアップするために使用することが可能です.これら
の変数はツリー内のすべての`Makefile'で定義されるべきなので(これら
二つのリビルドルールはすべてのものに出力されるため),
`configure.ac'でAC_SUBST
するのが安全で簡単です.例えば以下
の文で,`version.sh'が変更されるたび`configure'が再実行され
ます.
AC_SUBST([CONFIG_STATUS_DEPENDENCIES], ['$(top_srcdir)/version.sh']) |
$(top_srcdir)/
があることに注意して下さい.この変数
はすべての`Makefile'で使用されるので,その値はビルドの階層レベル
を知っておく必要があります.
CONFIG_STATUS_DEPENDENCIES
に対するCONFIGURE_DEPENDENCIES
を誤解しないように注意して下さい.
CONFIGURE_DEPENDENCIES
は`configure'ルールに依存性を追加し,
それはautoconf
を実行することになります.automake
は既に
m4_include
されるファイルを追跡しているので,この変数は,滅多に
使用すべきではありません.しかし,m4_esyscmd
やそれに似た副作用
のある推奨されていないマクロを用いたトリッキーなゲームを楽しんでいると
き役に立つはずです.
CONFIG_STATUS_DEPENDENCIES
は`config.status'ルールに依存性
を追加し,それは`configure'を実行することになります.このため,こ
の変数として,configureの実行に副作用として読み込まれる可能性がないよ
うに,標準的ではないソースを持ち込むべきで,例えば上記の例の
`version.sh'などです.
`version.sh'スクリプトについて言わせてもらうと,我々は今日,それ を推奨していません.それらは主に,パッケージのバージョンをスクリプトで 自動的に更新するとき使用されていました(例えば,毎日のビルド).古い形式 の`configure.ac'は以下のようになっているものもありました.
AC_INIT . $srcdir/version.sh AM_INIT_AUTOMAKE([name], $VERSION_NUMBER) ... |
VERSION_NUMBER
を設定
します.この例の問題は,automake
が依存性を追跡できないことと
(`version.sh'をCONFIG_STATUS_DEPENDENCIES
にリストアップし,
このファイルをユーザに配布する),古い形式のAC_INIT
と
AM_INIT_AUTOMAKE
を使用していることです.新しい構文に更新するの
は,AC_INIT
の引数でシェル変数が利用できないので,素直な方法では
ありません.我々は`version.sh'を`configure.ac'でインクルード
されるM4ファイルで置換することを推奨します.
m4_include([version.m4]) AC_INIT([name], VERSION_NUMBER) AM_INIT_AUTOMAKE ... |
m4_define([VERSION_NUMBER], [1.2])
のようなものを含めることができます.この二番目の形式の利点は,
automake
がリビルドルールを定義するとき依存性に注意し,ファイル
も自動的に配布されることです.不便な点は,バージョンナンバーが上昇する
たびにautoconf
が再実行されることで,以前の設定では,
`configure'だけが再実行されていました.
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |