Previous: Conditional Sources, Up: 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