Go to the first, previous, next, last section, table of contents.


雑多な規則

他のどこにも適さない少数の規則と変数があります.

etagsのインターフェース

Automakeは,GNU Emacsで使用する`TAGS'ファイルを生成するための規則を 生成する場合もあります.

C,C++,またはFortran 77のソースコードやヘッダが存在している場合, tagsTAGSターゲットがディレクトリに対して生成されます.

複数のディレクトリがあるパッケージのトップディレクトリで,tagsター ゲットファイルは実行時に生成され,それは実行時に,サブディレクトリにある すべての`TAGS'の参照を含んでいる`TAGS'ファイルを生成します.

変数ETAGS_ARGSが定義されている場合,tagsターゲットも生成さ れます.この変数は,etagsが理解しないタグを使用しているソースを含 んでいるディレクトリでの使用を考慮しています.ユーザはetagsに追加 のフラグを渡すためにETAGSFLAGSを使用することが可能です. `Makefile.am'AM_ETAGSFLAGSを利用することもできます.

ソースとTexinfoファイルのノードに対するタグをAutomakeで生成する方法は以 下のようになります.

ETAGS_ARGS = automake.in --lang=none \
 --regex='/^@node[ \t]+\([^,]+\)/\1/' automake.texi

`ETAGS_ARGS'にファイル名を加える場合,おそらく `TAGS_DEPENDENCIES'も設定したいでしょう.この変数の中身は tagsターゲット対する依存性に直接追加されます.

Automakeは,@command{vi}形式の`tags'ファイルのビルドで使用される, ctagsターゲットを生成します.変数CTAGSは,呼び出されるプロ グラムの名前です(デフォルトは`ctags').CTAGSFLAGSは,ユーザ が追加フラグを渡すために使用され,AM_CTAGSFLAGS`Makefile.am'で使用されます.

Automakeは,mkidをソース上で実行するIDターゲットも生成しま す.これはディレクトリ単位に基づくサポートだけです.

AutomakeはGNU Global Tags programもサポートします.GTAGSターゲットは,自動的にGlobal Tagを 実行し,結果をビルドディレクトリに書き込みます.変数GTAGS_ARGSは, gtagsに渡す引数を保持しています.

新しいファイル拡張子の取り扱い

Automakeが知らないファイル形式を処理するために,新しい暗黙の規則を導入す ることが役に立つこともあります.

例えば,`.foo'ファイルを`.o'ファイルにコンパイルするコンパイラ があると仮定します.その言語に対する接尾子規則を単純に定義するでしょう.

.foo.o:
        foocc -c -o $@ $<

そして,`_SOURCES'変数で`.foo'ファイルを直接使用し,正しい結果 が期待されるでしょう.

bin_PROGRAMS = doit
doit_SOURCES = doit.foo

これはより簡単で,より一般的な状況です.それ以外の状況では,定義している サフィックス規則を,Automakeが理解する手助けが必要です.通常これは,拡張 子がドットで始まらないときに生じます.そのときにしなければならないことは, 暗黙の規則を定義する前に,新しい接尾子のリストをSUFFIXES 変数に書き込むことです.

例えば,以下の定義で,Automakeが`.idlC.cpp:'`.idlC'`.cpp'に変換してみるという誤解をしないようにします.

SUFFIXES = .idl C.cpp
.idlC.cpp:
        # whatever

注意事項のように,SUFFIXES変数make.SUFFIXES特殊ター ゲットのように動作します..SUFFIXESを独自にいじくるべきではなく, その代わりにSUFFIXESを使用しAutomakeが.SUFFIXESに対する接 尾子リストを生成するようにすべきです.与えられた全てのSUFFIXESは 生成された接尾子リストの最初に書かれ,Automakeが生成するまだリストに無い 接尾子が続きます.

Multilibのサポート

Automakeには,multilibと呼ばれているあまり知られていない機能のサポートが あります.multilibは,一度に複数の異なるABIに対してビルドされるラ イブラリです.毎回,ライブラリが異なるターゲットフラグの組み合わせでビル ドされます.これは,ライブラリがクロスコンパイルを目的としていて,コンパ イラがサポートしているライブラリに対して,ほとんど排他的に使用されるとき だけ役に立ちます.

multilibのサポートはまだ実験中です.multilibを理解していて,遭遇した問題 をデバッグすることが可能な場合のみ,それを使用してください.


Go to the first, previous, next, last section, table of contents.