前: Conditional Sources, 上: A Program


7.1.4 プログラムの条件付コンパイル

ビルドされるプログラムをconfigure時に決定することが役に立つときもあり ます.例えば,GNU cpioは特別な状況のときだけmtrmtをビルドします.プログラムの条件付きコンパイルを達成するとい う意味は,ソースファイルのコンパイルを条件的に行なうことと一緒です.置 換式を用いたり条件式を用いたりします.

7.1.4.1 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_PROGRAMSlibexec_PROGRAMS,そして EXTRA_PROGRAMSを書き換えます.configureの置換式で,実行 時に値を明示的に書き換えることは明らかに不可能なので, AC_SUBST([MT], ['mt${EXEEXT}'])の様に$(EXEEXT)を付加す ることには気を付けて下さい.

7.1.4.2 Automakeの条件式を使用した条件的プログラム

ビルドするプログラムを選択するため,Automakeの条件式を (see Conditionals)使用することも可能です.この状況では, $(EXEEXT)EXTRA_PROGRAMSに気を付ける必要はありません.

     bin_PROGRAMS = cpio pax
     if WANT_MT
       bin_PROGRAMS += mt
     endif
     if WANT_RMT
       libexec_PROGRAMS = rmt
     endif