次: , 上: Directories


6.1 サブディレクトリの再帰

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