次: , 前: ifnames Invocation, 上: Making configure Scripts


3.4 configureを作成するためautoconfを使用する

configure.acからconfigureを作成するために, autoconfプログラムを引数無しで実行してください. autoconfは,Autoconfマクロを使用しながら,M4マクロプロセッサを 用いてconfigure.acを処理します.autoconfに引数を与えて いる場合,configure.acの代わりにそのファイルを読み, configureの代わりに,標準出力にコンフィグレーションスクリプト を書き出します.autoconfに引数-を与えた場合, configure.acの代わりに標準入力から読み込み,標準出力にコンフィグ レーションスクリプトを書き出します.

Autoconfマクロは,複数のファイルで定義されています.ファイルにはAutoconf と一緒に配布される物もあります.autoconfは最初にそれを読み込み ます.オプションのファイルacsite.m4を,配布されたAutoconfマクロファ イルを含むディレクトリで探し,オプションのファイルaclocal.m4はカ レントディレクトリで探します.これらのファイルは,サイトやパッケージの Autoconfマクロ定義を含めることが可能です(詳細は,see Writing Autoconf Macros).一つ以上のファイルで定義されているマクロをautoconfが 読み込む場合,最後の定義がそれ以前の定義に優先します.

autoconfは以下のオプションを受け入れます.

--help
-h
コマンドラインオプションの概要を出力して終了します.
--version
-V
Autoconfのバージョンナンバーを出力して終了します.
--verbose
-v
処理しているステップを報告します.
--debug
-d
一時的なファイルを削除しません.
--force
-f
入力ファイルよりconfigureが新しい場合でも,それを再生成します.
--include=dir
-I dir
dirをインクルードパスの後に追加します.複数回の呼び出しで累積され ます.
--prepend-include=dir
-B dir
dirをインクルードパスの前に追加します.複数回の呼び出しで累積され ます.
--output=file
-o file
(出力や追跡の)出力をfileに保存します.ファイル-は標準出力 に対するものです.
--warnings=category
-W category
(実際にはカンマで分けたリストが可能な)categoryに関連する警告を報告 します.カテゴリの総合的なリストは,マクロAC_DIAGNOSEと See Reporting Messages. 特別な値には,以下のものが含まれています.
`all'
全ての警告を報告します.
`none'
何も報告しません.
`error'
警告をエラーとして扱います.
`no-category'
categoryに分類される警告を利用不可能にします.

`syntax'に関する警告はデフォルトで利用可能で,カンマで分けられたカ テゴリリストの環境変数WARNINGSは尊重されます.`-W category'を渡すことで, `--warnings=syntax,$WARNINGS,category'が渡されたかのように動 作します.デフォルトとWARNINGSを利用不可能にしたいが,(例えば) 時 代遅れの構成物についての警告は利用可能にしたい場合,-W none,obsoleteを使用してください.

autoconfはバックグラウンドでautom4teを使用するので, それはエラーのバックトレースを表示しますが,警告については行ないません. そうしたい場合,-W errorのみを渡してください.いくつかの例は, See autom4te Invocation.

--trace=macro[:format]
-t macro[:format]
configureスクリプトを作成しませんが,formatでマクロの呼 び出しをリストアップします.複数の--traceの引数は,複数のマクロ をリストアップするために使用可能です.単一のマクロに対する複数の --traceの引数は,累積的ではありません.その代わりにformat を必要なものにすべきです.

formatは,必要な場合は改行をともなう通常の文字列と,いくつかの特殊 なエスケープコードです.デフォルトは`$f:$l:$n:$%'です.format の詳細は,autom4te Invocationを参照してください.

--initialization
-i
デフォルトで,--traceはAutoconfマクロ(特にAC_DEFUNの定義) の初期化を追跡しません.これで顕著に高速化されますが,このオプションで利 用不可能にすることができます.

configure.acファイルの内容を調査する必要があることもよくあります が,自分で解析することは,非常に脆くエラーを起こしやすいものです. configure.acをスキャンするために,--traceを信頼してみて ください.例えば,置換される変数のリストを見つけるため,以下のようにして みてください.

     $ autoconf -t AC_SUBST
     configure.ac:2:AC_SUBST:ECHO_C
     configure.ac:2:AC_SUBST:ECHO_N
     configure.ac:2:AC_SUBST:ECHO_T
     More traces deleted

以下の例では,`$@',`$*'と$%の違いを強調しています.

     $ cat configure.ac
     AC_DEFINE(This, is, [an
     [example]])
     $ autoconf -t 'AC_DEFINE:@: $@
     *: $*
     $: $%'
     @: [This],[is],[an
     [example]]
     *: This,is,an
     [example]
     $: This:is:an [example]

formatは,柔軟にできます.

     $ autoconf -t 'AC_SUBST:$$ac_subst{"$1"} = "$f:$l";'
     $ac_subst{"ECHO_C"} = "configure.ac:2";
     $ac_subst{"ECHO_N"} = "configure.ac:2";
     $ac_subst{"ECHO_T"} = "configure.ac:2";
     More traces deleted

長いseparatorは,複雑な構想の可読性を改善したり,解析を簡単にする ために使用可能です(例えば,分離文字に適した単一文字が無いときです).

     $ autoconf -t 'AM_MISSING_PROG:${|:::::|}*'
     ACLOCAL|:::::|aclocal|:::::|$missing_dir
     AUTOCONF|:::::|autoconf|:::::|$missing_dir
     AUTOMAKE|:::::|automake|:::::|$missing_dir
     More traces deleted