Next: , Previous: Program and Library Variables, Up: Programs


7.5 デフォルトの_SOURCES

_SOURCES変数は,プログラム(see A Program),ライブラリ (see A Library),そしてLibtoolライブラリ(see A Shared Library) のソースファイルを指定するために使用します.

そのような変数がターゲットに対して指定されていない場合,Automakeは独自 に定義します.デフォルトは,コンパイルする単一のCファイルで,その名前 はターゲット自身の名前を元にしていて,拡張子を.cに置換したもの です.(Cのデフォルトは危険ですが,我々は歴史的な理由で身動きがとれなく なっています.)

例えば,以下のようなMakefile.amがあって,対応する ‘libfoo_a_SOURCES’が無い場合を考えます.

     lib_LIBRARIES = libfoo.a sub/libc++.a

libfoo.aはデフォルトのソースファイル名libfoo.cを使用して ビルドされ,sub/libc++.asub/libc++.cからビルドされます. (より古いバージョンでは,sub/libc++.asub_libc___a.cか ら,すなわちデフォルトのソースはターゲットの標準的な名前に.cを 追加したものでした.我々は,新しい動作はより賢明だと信じていますが,後 方互換性として,その名前のファイルやルールが存在する場合,automakeは古 い名前を使用します.)

デフォルトのソースは,たくさんのテストプログラムをそれぞれ単一のソース からビルドする,テストスイートで主に役に立ちます.例えば以下のようにし ます.

     check_PROGRAMS = test1 test2 test3

test1test2,そしてtest3は,それぞれ test1.ctest2.c,そしてtest3.cからビルドされます.

これが便利になるもう一つの状況は,独自のファイル(moduleN.c)で定 義されている多くのLibtoolモジュール(moduleN.la)をビルドするとき です.

     AM_LDFLAGS = -module
     lib_LTLIBRARIES = module1.la module2.la module3.la

おしまいに,このデフォルトのソースを求めることを避ける必要がある状況が 一つあります.ターゲットがソースからビルドされないときです.我々は trueでそのような例を見てきました.これは,ターゲットのすべての構 成要素が既にコンパイルされていて,単に_LDADD変数を使用して結合 する必要があるときに生じます.そして,automakeがデフォルトを求めないよ うに空の_SOURCES変数を定義する必要があります.

     bin_PROGRAMS = target
     target_SOURCES =
     target_LDADD = libmain.a libmisc.a