Next: Strictness, Up: Generalities
AutomakeはMakefile.amを読み込み,Makefile.inを生成します. Makefile.amで定義されている変数とルールで,Automake は更に特殊 なコードを生成します.例えば,‘bin_PROGRAMS’変数定義で,生成され るプログラムをコンパイルしてリンクするルールを生成します.
Makefile.amの変数定義とルールは,そのまま生成されたファイルにコ
ピーされます.これにより,生成されるMakefile.inに任意のコードを
加えることが可能になります.例えばAutomakeの配布物には,Automake管理者
がソースコントロールシステムから配布物を作成するときに使用する,非標準
的なcvs-dist
ターゲットが含まれています.
ほとんどのGNU makeの拡張は,Automakeが理解しないことに注意してください. Makefile.amでこのような拡張を使用すると,エラーが生じたり紛らわ しい動作をしたりします.
特別な例外として,GNU makeの追加オペレータの‘+=’はサポートされて います.このオペレータは,その右辺の引数を左辺で指定された変数に追加し ます.Automakeはそのオペレータを通常の‘=’オペレータに変換します. このため‘+=’は,あらゆるmakeプログラムでうまく動作します.
Automakeは賢い方法で,ルールや変数定義に隣接しているグループ化されたコ メントの保持を試みます.
一般に,Makefile.amで定義されているルールは,automake
に
よって自動的に生成されるルールに似た名前を持つものに優先します.これは
サポートされている機能ですが,一般的に,生成されるルールは非常に特殊な
こともあるので,それを利用することは避けたほうがよいでしょう.
同様に,Makefile.amで定義されている変数やconfigure.acで
AC_SUBST
されているものも,automake
が通常作成するあらゆる
変数定義より優先されます.この機能は,ルール優先の機能より役に立つこと
が多いでしょう.automake
で生成された多くの変数は,内部で使用す
ることだけ考慮されていて,それら名前が将来のリリースで変更される可能性
があることに注意しておいてください.
変数定義を調査しているとき,Automakeは定義で参照されている変数を再帰的
に調査します.例えば,以下の断片的なfoo_SOURCES
の内容をAutomake
が調査している状況を考えます.
xs = a.c b.c foo_SOURCES = c.c $(xs)
それは,ファイルa.c,b.c,そしてc.cを
foo_SOURCES
の内容として使用します.
Automakeでは,出力ファイルにコピーされないコメントの形式も利用 可能です.Automakeは‘##’で始まる(スペースの前置は可能です)すべて の行を完全に無視します.
読み込まれるMakefile.amの最初の行に,以下の行を書くのはいつもの ことです.
## Process this file with automake to produce Makefile.in