サブディレクトリがあるパッケージでは,最上位のMakefile.amでビル
ドするサブディレクトリをAutomakeに伝える必要があります.これは
SUBDIRS
変数によってなされます.
SUBDIRS
変数は,さまざまな種類のビルドが行われるサブディレクトリ
のリストを保持しています.生成されているMakefile内の多くのター
ゲットに対するルールは(例えばall
),ローカルと指定されたすべての
サブディレクトリの両方で実行されます.SUBDIRS
でリストアップされ
ているディレクトリには,Makefile.amを含んでいる必要がないことに
注意してください.(configure後の)Makefileだけが必要です.こうす
ることで,(gettext
のようなもので,Third-Party Makefiles
も参照して下さい)Automakeを使用しないパッケージからライブラリを含める
ことが可能になります.
サブディレクトリを使用しているパッケージでは,最上位の Makefile.amは非常に短いことが多くなっています.例えば,GNU Hello 配布物のMakefile.amは以下のようになっています.
EXTRA_DIST = BUGS ChangeLog.O README-alpha SUBDIRS = doc intl po src tests
Automakeがmake
をサブディレクトリで呼び出すとき,MAKE
変数
の値を使用します.それは,変数AM_MAKEFLAGS
の値をmake
の呼
び出しに渡します.これで,常にmake
に渡す必要があるフラグを
Makefile.amで設定することが可能になります.
SUBDIRS
で記述されているディレクトリは,通常,現在のディレクトリ
の直接の子ディレクトリになっていて,それぞれのサブディレクトリには,そ
れより不快サブディレクトリを示すSUBDIRS
を示している,独自の
Makefile.amが含まれています.この方法で任意の深さのパッケージ構
成で,Automakeを使用することがが可能になります.
デフォルトで,Automakeはpostfixの順序での最初の深さで動作する
Makefileを生成します.サブディレクトリはカレントディレクトリの
前にビルドされます.しかし,この順序を変更することは可能です.
SUBDIRS
に‘.’を書くことでこうすることが可能です.例えば,
‘.’を最初に書くことで,ディレクトリの‘prefix’の順序になりま
す.
以下を使用します.
SUBDIRS = lib src . test
これでlib/がsrc/の前にビルドされ,そしてカレントディレク トリがビルドされ,最後にtest/ディレクトリがビルドされるでしょう. 構成されたものをテストするので,テストディレクトリを他のすべての後にビ ルドするように手配するのは一般的です.
すべての‘clean’ルールは,ビルドルールの逆の順序で実行されます.