サブディレクトリがあるパッケージでは,最上位の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'ルールは,ビルドルールの逆の順序で実行されます.