コマンドライン引数は,M4のものをモデルにしています.
autom4te options files
ここでのfilesは,直接m4に渡すものです.正規の展開に加え, それは四文字表記(see Quadrigraphs)と,出力の現在の行の `__oline__'の置換を処理します.それは,filesに対して拡張され た構文もサポートしています.
もちろん,それはAutoconfの一般的のオプションのサブセットをサポートしてい ます.
m4の拡張として,それらは以下のオプションが含まれます.
AC_DIAGNOSE
の
See Reporting Messages. 以下の特殊な値が含まれます.
`syntax'に関する警告は,デフォルトで利用可能で,カテゴリのカンマで
分離されたリストの環境変数WARNINGS
は尊重されます.
autom4te -W categoryは,実際に悪いことを実行したかのよう
に動作します.
autom4te --warnings=syntax,$WARNINGS,category
autom4teのデフォルトとWARNINGS
を利用不可能にしたいけれ
ども,(例えば)時代遅れの構成物に関する警告は利用可能にしたい場合,
-W none,obsoleteを使用するべきでしょう.
autom4teはエラーのバックトレースを表示しますが,警告は表示しま せん.警告も表示したい場合,-W errorを渡してください.例えば以 下のようなconfigure.acを考えます.
AC_DEFUN([INNER], [AC_RUN_IFELSE([AC_LANG_PROGRAM([exit (0)])])]) AC_DEFUN([OUTER], [INNER]) AC_INIT OUTER
以下のようになるでしょう.
$ autom4te -l autoconf -Wcross configure.ac:8: warning: AC_RUN_IFELSE called without default \ to allow cross compiling $ autom4te -l autoconf -Wcross,error -f configure.ac:8: error: AC_RUN_IFELSE called without default \ to allow cross compiling acgeneral.m4:3044: AC_RUN_IFELSE is expanded from... configure.ac:2: INNER is expanded from... configure.ac:5: OUTER is expanded from... configure.ac:8: the top level
.m4f
は
file.m4
で置換されます.これは,ファイルが固められているとき
だけに実行されるマクロ,通常はm4_define
の追跡で役に立ちます.例え
ば以下のように実行します.
autom4te --melt 1.m4 2.m4f 3.m4 4.m4f input.m4
これは以下を実行したのと等価です.
m4 1.m4 2.m4 3.m4 4.m4 input.m4
一方,以下を実行した場合を考えます.
autom4te 1.m4 2.m4f 3.m4 4.m4f input.m4
これは以下と等価です.
m4 --reload-state=4.m4f input.m4
autom4te 1.m4 2.m4 3.m4 --freeze --output=3.m4f
これは以下に対応します.
m4 1.m4 2.m4 3.m4 --freeze-state=3.m4f
それ以外のm4上の追加機能として,autom4teがその結果を キャッシュするというものがあります.GNU M4は,標準出力を生成す ると同時にトレースすることが可能です.トレースはGNUビルドシス テムで重点的に使用されています.autoheaderは, config.h.inをビルドするために,autoreconfは,使用されて いるGNUビルドシステムの構成要素を決定するために, automakeはconfigure.acをパースするため等として使用して います.m4の長い実行結果を保存するために,通常の展開を実行して いる間,トレースはキャッシュされます1.このキャッシュ(実際には複数あ る) は,ディレクトリautom4te.cacheに保存されます.いつでも 削除して大丈夫です(特に,理由があればautom4teはそれが捨 てられてしまったと考えます).
トレースはGNUビルドシステムに重きをおいて実装されているので, autom4teは,M4と比較して高度なトレース機能を提供していて,キャッ シュを利用する手助けとなります.
formatは,必要なときは改行を用いていて,特殊なエスケープコードをも 用いている通常の文字列です.デフォルトは`$f:$l:$n:$%'です.以下の特 殊なエスケープ文字が使用可能です.
エスケープの`$%'は,(`separator'に改行を書き込まない限り)一行 のトレース出力を生成しますが,`$@'と`$*'はそうではありません.
トレースの使用例はSee autoconf Invocation.
最後に,autom4teはAutom4teライブラリ(Autom4te libraries) の概念を導入します.それらは,強力ですが非常にシンプルな機能から成り立っ ています.コマンドライン引数の組み合わせの組です.
M4sugar
M4sh
Autotest
Autoconf
Autoconf-without-aclocal-m4
例として,Autoconfがデフォルトの場所/usr/localにインストールされ ている場合,`autom4te -l m4sugar foo.m4'を実行することは, `autom4te --prepend-include /usr/local/share/autoconf m4sugar/m4sugar.m4f --warning syntax foo.m4'を実行することと厳密に等価と なります.再帰的な展開も適用します.`autom4te --language m4sh foo.m4'を実行することは,`autom4te --language M4sugar m4sugar/m4sh.m4f foo.m4'と同じで,すなわち,`autom4te --prepend-include /usr/local/share/autoconf m4sugar/m4sugar.m4f m4sugar/m4sh.m4f --mode 777 foo.m4'と同じになります.言語の定義は, autom4te.cfgに保存されます.