他のどこにも適さない少数の規則と変数があります.
etags
のインターフェースAutomakeは,GNU Emacsで使用する`TAGS'ファイルを生成するための規則を 生成する場合もあります.
C,C++,またはFortran 77のソースコードやヘッダが存在している場合,
tags
とTAGS
ターゲットがディレクトリに対して生成されます.
複数のディレクトリがあるパッケージのトップディレクトリで,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が生成するまだリストに無い
接尾子が続きます.
Automakeには,multilibと呼ばれているあまり知られていない機能のサポートが あります.multilibは,一度に複数の異なるABIに対してビルドされるラ イブラリです.毎回,ライブラリが異なるターゲットフラグの組み合わせでビル ドされます.これは,ライブラリがクロスコンパイルを目的としていて,コンパ イラがサポートしているライブラリに対して,ほとんど排他的に使用されるとき だけ役に立ちます.
multilibのサポートはまだ実験中です.multilibを理解していて,遭遇した問題 をデバッグすることが可能な場合のみ,それを使用してください.
Go to the first, previous, next, last section, table of contents.