[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

18. 条件文

Automakeは単純な種類の条件文をサポートする。

条件文を使う前に、configure.inファイル(see section Automakeと共に与えられるAutoconfのマクロ)でAM_CONDITIONALを使っ てそれを定義しなければならない。AM_CONDITIONALマクロは二つの引数 を受け取る。

AM_CONDITIONALへの最初の引数は条件文の名前である。これは文字で始 まり、文字や整数、アンダースコアだけを含む単純な文字列であるべきだ。

AM_CONDITIONALへの二つ目の引数はシェルのif文での利用に適した、シェ ルの条件文である。その条件文はconfigureが実行されるときに評価され る。

条件文は典型的にはユーザがconfigureスクリプトに与えるオプションに 依存している。ここにもしユーザが`--enable-debug'オプションを使えば 真である条件文の書き方の例がある。

 
AC_ARG_ENABLE(debug,
[  --enable-debug    Turn on debugging],
[case "${enableval}" in
  yes) debug=true ;;
  no)  debug=false ;;
  *) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;;
esac],[debug=false])
AM_CONDITIONAL(DEBUG, test x$debug = xtrue)

ここに`Makefile.am'でこの条件文を使用する方法の例を示す。

 
if DEBUG
DBG = debug
else
DBG =
endif
noinst_PROGRAMS = $(DBG)

この平凡な例はまたEXTRA_PROGRAMS(see section プログラムの構築)を使って処理されても 良い。

if文では単一の変数だけをテストして良い。else文は省かれて良 い。条件文はどんな深さにでも入れ子にして良い。

Automakeの条件文はGNU Makeの条件文と同じではないことに注意せよ。Automake の条件文は`configure'スクリプトによって設定時に点検され、 `Makefile.in'から`Makefile'への変換に影響する。それらは `configure'に渡されたオプションと`configure'がホスト・システム について発見した結果に基く。GNU Makeの条件文はmake時に点検され、makeプロ グラムに渡された変数や`Makefile'で定義された変数に基く。

Automakeの条件文はどんなmakeプログラムでも動作するだろう。


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Akihiro Sagawa on June, 15 2005 using texi2html 1.70.