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

6. 一番上のMakefile.am

flatでないパッケージでは、一番上の階層の`Makefile.am'はAutomakeにど のサブディレクトリが構築される予定なのかを教えなければならない。これは SUBDIRS変数を使って行われる。

SUBDIRSマクロはさまざまな種類の構築が起こるサブディレクトリのリス トを保持する。生成された`Makefile'の多くのターゲット(例えば all)は局所的に、そして指定された全てのサブディレクトリとで走るだろう。 SUBDIRSで列挙されるディレクトリは`Makefile.am'を含む必要はな いことに注意せよ。(設定の後に)`Makefile'だけが必要だ。これで (gettextのような)Automakeを使わないパッケージからライブラリを含め ることができる。SUBDIRSで記述されるディレクトリは現在のディレクト リの直接の子供でなければならない。例えば、`src/subdir'を SUBDIRSに入れることはできない。

deepパッケージでは、一番上層の`Makefile.am'はよく非常に短い。例えば、 GNU Hello配布物の`Makefile.am'はこうである。

 
EXTRA_DIST = BUGS ChangeLog.O README-alpha
SUBDIRS = doc intl po src tests

GNU Inetutilsの場合のように、パッケージ全体の一部だけを構築したい なら、SUBDIRS変数を上書きすることが可能だ。あなたの `Makefile.am'では以下を含む。

 
SUBDIRS = @SUBDIRS@

そしてあなたの`configure.in'でこう指定できる。

 
SUBDIRS = "src doc lib po"
AC_SUBST(SUBDIRS)

これの要点は、Automakeはそのパッケージをそのサブディレクトリを持つように 構築するとだまされるが、実際にはconfigureが走らされるまでこのリス トは固定されないということだ。

SUBDIRSマクロはconfigureの置き換え(例えば`@DIRS@')を含むことがで きるが、Automake自身は実際にはこの変数の中身を調べない。

もしSUBDIRSが定義されれば、あなたの`configure.in'は AC_PROG_MAKE_SETを含まなければならない。

SUBDIRSの使用は一番上層の`Makefile.am'だけに制限されていない。 Automakeは任意の深さのパッケージを構成するように使用できる。

デフォルトでは、Automakeは深さ優先(訳注:depth-first)(`postfix')で作 業する`Makefile' を生成する。しかし、この順序を変更することは可能で ある。あなたはSUBDIRS に`.'を置くことによってこれを行うこと ができる。例えば、最初に`.'を置くことは、ディレクトリの `prefix'順序を引き起こすだろう。


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

This document was generated by Akihiro Sagawa on June, 15 2005 using texi2html 1.70.