次: , 上: Writing Autoconf Macros


9.1 マクロの定義

Autoconfマクロは,M4組み込みのm4_defineマクロに似た AC_DEFUNマクロを使用して定義されています.マクロ定義に加える際, AC_DEFUNは,マクロを呼び出す順番を制限するために使用されるコード を加えます(see Prerequisite Macros).

Autoconfマクロ定義は以下のようになります.

     AC_DEFUN(macro-name, macro-body)

マクロに渡す引数は,`$1',`$2'等のように参照することが可能です. M4マクロを書く際の完全な情報は,See How to define new macros.

マクロが偶然前に定義されている場合の問題を避けるために, macro-bodymacro-nameの両方を,適切に引用符で囲んで いることを確かめてください.

それぞれのマクロには,そのプロトタイプと短い説明を付与するため,ヘッダの コメントを書くべきです.引数がデフォルト値の場合,そのプロトタイプを表示 してください.例えば以下のようにします.

     # AC_MSG_ERROR(ERROR, [EXIT-STATUS = 1])
     # --------------------------------------
     m4_define([AC_MSG_ERROR],
     [{ _AC_ECHO([configure: error: $1], 2); exit m4_default([$2], 1); }])

マクロに関するコメントは,ヘッダコメントに残すべきです.その他のほとんど のコメントは,勝手にconfigureに入るので,コメントを導入するために `#'を使用し続けるだけで結構です.

ピュアなM4コードに関して,非常に特殊なコメントがある場合は,コメントを configureとヘッダコメントに入れる意味がないので,組み込みの dnlを使用してください.それでM4は,次の改行までのテキストを廃棄し ます.

dnlがコメントの導入に必要になることは滅多にないということを覚えて おいてください.dnlは,AC_REQUIREのような,出力を生成しな いマクロに続く改行を除去するときに,より役に立ちます.