autoheaderプログラムは,configureが使用するためのC
の`#define'宣言のテンプレートファイルを作成することが可能です.
configure.acでAC_CONFIG_HEADERS(
file)
を呼び出す場合,
autoheaderはfile.inを作成します.複数のファイルが
引数で与えられている場合,最初のファイルを使用します.それ以外の場合,
autoheaderはconfig.h.inを作成します.
この作業を行なうために,使用する可能性がある全てのシンボルを記述すること
をautoheaderは必要とします.すなわち,少なくとも,一つの
AC_DEFINE
かAC_DEFINE_UNQUOTED
が,それぞれのシンボルに対し
て三番目の引数を用いて呼び出されている必要があります(see Defining Symbols).更に,AC_DEFINE
の最初の引数をリテラルにする必要がある
という制約があります.Autoconfの組み込みテストで定義されている全てのシン
ボルは,既に適切に記述されているということに注意してください.独自に定義
したものだけ記述する必要があります.
autoheaderがなぜ必要か不思議に思うかもしれません.つまり,なぜ configureは,スクラッチからconfig.hを作成する代わりに, config.hを生成するためにconfig.h.inへの“patch”を必要とす るのでしょうか?さて,全てがロックされたとき,autoheaderを管理 している時間が無駄になるというのが答えです.直接config.hを生成す ることが,必要なことの全てです.しかし,うまくいかないときは, autoheaderの存在に感謝することになるでしょう.
シンボルが記述されているという事実は,config.hに意味があることを
調査するために重要です.#define
される(またはされない) シン
ボルがうまく定義されているリストがあるという事実もまた,
configureが実行不可能な環境にパッケージを移植している人には重
要です.彼らは,空白で埋め尽くす必要しかありません.
では,要点に戻りましょう.autoheaderの呼び出し...
引数をautoheaderに与えた場合,configure.acの代わりにそ のファイルを使用し,config.h.inの代わりに標準出力にヘッダファイル を書き出します.`-'引数をautoheaderに与えた場合, configure.acの代わりに標準入力から読み込み,標準出力にヘッダファ イルを書き出します.
autoheaderは以下のオプションを受け入れます.