[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

16. Makefileのリビルド

Automakeは,`Makefile',`configure',そして `Makefile.in'のようなその他の派生するファイルを,自動的にリビルド するルールを生成します.

`configure.ac'でAM_MAINTAINER_MODEを使用している場合,これ らの自動的なリビルドのルールは,管理者モードでのみ利用可能になります.

`.m4'ファイルを探す場所を伝えるために,-Iのような引数を用 いてaclocal実行する必要があることもあります.makeが自動 的にaclocalを実行するときもあるので,これらの引数を指定する方法 が必要になります.ACLOCAL_AMFLAGSを定義することで,こうすること が可能になります.これは,aclocalに渡す引数をそのまま保持してい ます.この変数は,最上位の`Makefile.am'でのみ役に立ちます.

追加の依存性を用いて`configure'や`config.status'をリビルドす るルールを補足すると便利なときもあります.変数 CONFIGURE_DEPENDENCIESCONFIG_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.sh'はシェルの断片で,VERSION_NUMBERを設定 します.この例の問題は,automakeが依存性を追跡できないことと (`version.sh'をCONFIG_STATUS_DEPENDENCIESにリストアップし, このファイルをユーザに配布する),古い形式のAC_INITAM_INIT_AUTOMAKEを使用していることです.新しい構文に更新するの は,AC_INITの引数でシェル変数が利用できないので,素直な方法では ありません.我々は`version.sh'を`configure.ac'でインクルード されるM4ファイルで置換することを推奨します.
 
m4_include([version.m4])
AC_INIT([name], VERSION_NUMBER)
AM_INIT_AUTOMAKE
...
ここで,`version.m4'にはm4_define([VERSION_NUMBER], [1.2]) のようなものを含めることができます.この二番目の形式の利点は, automakeがリビルドルールを定義するとき依存性に注意し,ファイル も自動的に配布されることです.不便な点は,バージョンナンバーが上昇する たびにautoconfが再実行されることで,以前の設定では, `configure'だけが再実行されていました.


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Akihiro Sagawa on February, 25 2004 using texi2html