次: , 前: Makefile Substitutions, 上: Setup


4.8 コンフィグレーションヘッダファイル

パッケージに二,三個以上のCプリプロセッサのシンボルのテストが含まれてい るとき,コマンドラインでコンパイラに渡す`-D'オプションはかなり長く なります.これは二つの問題があります.一つは,makeの出力のエラー を探すとき,見て分からなくなることです.更に深刻な問題は,コマンドライン がいくつかのオペレーティングシステムの長さの制限を越えることです.コンパ イラに`-D'オプションを渡す代わりに, configureスクリプト で`#define'ディレクティブを含んでいるCヘッダファイルを作成すること が可能です.AC_CONFIG_HEADERマクロで,この出力を選択します.それ は,AC_INITの直後に呼び出します.

(例えば,constを再定義する場合)宣言の不一致を防ぐために,パッケー ジでは,あらゆる他のヘッダの前で,コンフィグレーションヘッダファイルを `#include'すべきです.`#include "config.h"'の代わりに `#include <config.h>'を使用し,Cコンパイラに`-I.'オプション(ま たは`-I..'.config.hがある方)を渡してください.そうすること で,(おそらく配布物を作成するときに)ソースディレクトリがコンフィグレーショ ンされても,他のビルドディレクトリは,ソースディレクトリから config.hを探すことなく,コンフィグレーション可能になります.

— マクロ: AC_CONFIG_HEADERS (header ..., [cmds], [init-cmds])

このマクロは,実際にファイルを作成するマクロの一つです. Configuration Actionsを参照してください.AC_OUTPUTは, #define宣言のCプリプロセッサを含んでいるheaderの空白で区切 られたリストを作成し,生成されたファイルの`@DEFS@'を,DEFS の値の代わりに,-DHAVE_CONFIG_Hで置換します.通常,header の名前はconfig.hです.

headerがすでに存在していて,その内容がAC_OUTPUTが書き込むも のと同じ場合は,そのまま残ります.こうすることで,ヘッダファイルに依存す るオブジェクトファイルを不必要に再コンパイルする必要がなく,コンフィグレー ション時に変更を行なうことが可能になります.

通常,入力ファイルはheader.inと命名されます.しかし,入力ファ イルをコロンで分けた入力ファイルのリストにheaderを加えることで優先 可能です.例えば,以下のようにします.

          AC_CONFIG_HEADERS([config.h:config.hin])
          AC_CONFIG_HEADERS([defines.h:defs.pre:defines.h.in:defs.post])
     

こうすることで,MS-DOSでアクセスできるままにしたり,常套句をファイルに前 置したり,後置したりすることが可能になります.

headerの詳細は,See Configuration Actions.