次: , 上: Generalities


2.1 一般的な操作

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.acAC_SUBSTされているものも,automakeが通常作成するあらゆる 変数定義より優先されます.この機能は,ルール優先の機能より役に立つこと が多いでしょう.automakeで生成された多くの変数は,内部で使用す ることだけ考慮されていて,それら名前が将来のリリースで変更される可能性 があることに注意しておいてください.

変数定義を調査しているとき,Automakeは定義で参照されている変数を再帰的 に調査します.例えば,以下の断片的なfoo_SOURCESの内容をAutomake が調査している状況を考えます.

     xs = a.c b.c
     foo_SOURCES = c.c $(xs)

それは,ファイルa.cb.c,そしてc.cfoo_SOURCESの内容として使用します.

Automakeでは,出力ファイルにコピーされないコメントの形式も利用 可能です.Automakeは`##'で始まる(スペースの前置は可能です)すべて の行を完全に無視します.

読み込まれるMakefile.amの最初の行に,以下の行を書くのはいつもの ことです.

     ## Process this file with automake to produce Makefile.in