通常,新しいAutomakeのリリースにはバグの修正と新しい機能が含まれています. 残念ながら,それらは新しいバグと非互換性ももたらす可能性があります.この ことは,パッケージがAutomakeの特定のバージョンを要求する可能性となる四つ の原因となります.
大きなツリーのパッケージを管理するとき,それぞれが異なるバージョンの Automakeを要求することが問題になります.過去には,開発者(と時にはユーザ が)異なるバージョンのAutomakeを異なる場所にインストールし,それぞれのパッ ケージに対して適切な`$PATH'に切替える必要があったという意味です.
バージョン1.6で開始していますが,Automakeはバージョン管理されたバイナリ をインストールします.これは同じ`$prefix'で複数のバージョンの Automakeをインストールすることが可能で,`$PATH'で誤魔化すこと無く `automake-1.6'や`automake-1.7'を実行することで任意のバージョン のAutomakeを選択することが可能だということを意味します.さらに,Automake 1.6で生成された`Makefile'は,リビルドの規則で明示的に `automake-1.6'を使用します.
`automake-1.6'の`1.6'は,AutomakeのバージョンではなくAutomake のAPIのバージョンだということに注意してください.バグの修正版が作成され た場合,例えばAutomake 1.6.1になりますが,APIのバージョンは1.6のままです. これは,Automake 1.6で動作するパッケージは1.6.1でも動作することを意味し ます.結局,これは人々がバグの修正版に期待するものになります.
パッケージがリリースで導入された機能やバグの修正に依存している場合,古い リリースを使用しないことを確実にするため,Automakeへのオプションとしてこ のバージョンを渡すことが可能です.例えば,`configure.in'で以下の内 容を使用してください.
AM_INIT_AUTOMAKE(1.6.1) dnl Require Automake 1.6.1 or better.
または特定の`Makefile.am'で以下の内容を使用してください.
AUTOMAKE_OPTIONS = 1.6.1 # Require Automake 1.6.1 or better.
Automakeのバージョンが要求されたバージョンより古い場合,Automakeはエラー メッセージを出力します.
Automakeのプログラミングインターフェースは簡単に定義できません.基本的に, 全てのドキュメント化されている変数と`Makefile.am'の著者が 利用可能なターゲットを少なくとも含めるべきで,動作はそれらに関連していて (例えば,`-hook'が実行される場所),`automake'と`aclocal' のコマンドラインインターフェースがあって,...
ドキュメント化されていない変数,ターゲット,またはコマンドラインオプショ ンは全て,APIの一部ではありません.バージョンが変われば(バグの修正に役立 つ場合は,バグの修正版でも) 変更されるかもしれないので,それらを使用する ことは避けるべきです.
そのようなドキュメント化されていない機能を使用する必要があると判明した場 合,automake@gnu.orgでコンタクトを取り,ドキュメントを書きテス トスイートで試してみてください.
Go to the first, previous, next, last section, table of contents.