[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
Automakeは単純な形式の条件文をサポートします.
条件文を使用する前に,configure.ac
ファイルで AM_CONDITIONAL
を使用してそれを定義する必要があります (see 節 5.6 Automakeが提供するAutoconfマクロ).
シェルのcondition(シェルのif
文で使用されるのに適切なもの) は,configure
が実行されるときに評価されます.すべての AM_CONDITIONAL
が毎回configure
の実行で呼び出されるように 調整する必要があります -- AM_CONDITIONAL
が条件付き(例えば,シェ ルのif
文)で実行される場合,結果としてautomakeが混乱します.
条件文は一般的に,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 節 7.1.4 プログラムの条件付コンパイル).
if
文で,`!'を使用した否定も可能な,単一の変数のみを調査し たいかもしれません.else
文は省略可能です.条件文は任意の深さに ネスト可能です.else
に引数を指定することも可能ですが,いずれの 場合でも,現在のif
に対して使用される条件の否定となっている必要 があります.同様に,end
で閉じられた条件を指定することも可能です.
if DEBUG DBG = debug else !DEBUG DBG = endif !DEBUG |
対称性のないの条件文はエラーとなります.
Automakeの条件文はGNU Makeの条件文とは同じでないことに注意してください. Automakeの条件文は,configure時に`configure'スクリプトでチェック され,`Makefile.in'から`Makefile'への変換に影響を与えます. それらは,`configure'に渡すオプションと,`configure'がホスト システムについて発見した結果に基づきます.GNU Makeの条件文は, make
時に調査され,makeプログラムに渡された,あるいは `Makefile'で定義された変数に基づいています.
Automakeの条件文は,どんなmakeプログラムでも動作します.
[ << ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |