前: Conditional Sources, 上: A Program
ビルドされるプログラムをconfigure時に決定することが役に立つときもあり
ます.例えば,GNU cpioは特別な状況のときだけmtと
rmtをビルドします.プログラムの条件付きコンパイルを達成するとい
う意味は,ソースファイルのコンパイルを条件的に行なうことと一緒です.置
換式を用いたり条件式を用いたりします.
configureの置換式を使用した条件的プログラムこの場合は,ビルドされる可能性のあるすべてのプログラムをAutomakeに知ら
せる必要がありますが,同時に,configureで指定されるプログラムを
使用するようにMakefile.inを生成させる必要もあります.このことは,
それぞれの`_PROGRAMS'定義にconfigureでの置換式の値を持たせ
ることで行なわれますが,一方では,EXTRA_PROGRAMSでオプションと
してビルドされるプログラムがすべてリストアップされています.
bin_PROGRAMS = cpio pax $(MT)
libexec_PROGRAMS = $(RMT)
EXTRA_PROGRAMS = mt rmt
EXEEXTの説明として,Automakeは$(EXEEXT)をそれぞれのバイナ
リに付加して,bin_PROGRAMS,libexec_PROGRAMS,そして
EXTRA_PROGRAMSを書き換えます.configureの置換式で,実行
時に値を明示的に書き換えることは明らかに不可能なので,
AC_SUBST([MT], ['mt${EXEEXT}'])の様に$(EXEEXT)を付加す
ることには気を付けて下さい.
ビルドするプログラムを選択するため,Automakeの条件式を
(see Conditionals)使用することも可能です.この状況では,
$(EXEEXT)やEXTRA_PROGRAMSに気を付ける必要はありません.
bin_PROGRAMS = cpio pax
if WANT_MT
bin_PROGRAMS += mt
endif
if WANT_RMT
libexec_PROGRAMS = rmt
endif