次: Default _SOURCES, 前: A Shared Library, 上: Programs
それぞれのプログラムに関連して,プログラムのビルドの方法を修正するため に使用可能な変数の集合があります.それぞれのライブラリに対しても,それ に似たような変数のリストがあります.プログラム(やライブラリ)の標準的な 名前が,これらの変数の命名に対してベースとして使用されます.
以下のリストでは,名前“maude”をプログラムやライブラリを示すものとし て使用しています.Makefile.amで,これをプログラムの標準的な名前 に置換してください.このリストは,“maude”をプログラムを示すものとし ていますが,一般的に同じルールを,スタティックライブラリやダイナミック ライブラリに適用します.以下の文章では,プログラムとライブラリで異なる 状況をコメントしています.
接頭辞の`dist_'と`nodist_'で,`_SOURCES'にリストアップ されているファイルを配布するかどうか制御するために使用することが可能で す.ソースはデフォルトで配布されるので,`dist_'は冗長ですが,必要 があれば明確にするために指定可能です.
`_SOURCES'変数に与えるものとして`dist_'と`nodist_'の両 方を一度に用いることが可能です.これによって,配布するファイルとしない ものに簡単に分類することができ,例えば以下のようにします.
nodist_maude_SOURCES = nodist.c dist_maude_SOURCES = dist-me.c
デフォルトで,出力ファイル(Unixシステム上では.oファイル)は,現
在のビルドディレクトリに書き込まれます.しかし,現在のディレクトリに対
してオプションのsubdir-objects
の影響がある場合,.oファイ
ルはソースファイルの後で指名されるサブディレクトリに書き込まれます.例
えば,subdir-objects
が利用可能な場合,sub/dir/file.cは
sub/dir/file.oにコンパイルされます.この処理モードを好む人もい
ます.subdir-objects
をAUTOMAKE_OPTIONS
で指定することが可
能です(see Options).
この変数は,例えば`nodist_EXTRA_maude_SOURCES'のように,
`dist_'と`nodist_'もサポートします.
$(AR) $(ARFLAGS)
にライ
ブラリ名とライブラリに書き込むオブジェクトを続けて呼び出すことで作成さ
れます.`_AR'変数でこれに優先することが可能です.これは,通常C++
で使用されます.C++コンパイラには,ライブラリに組み込むすべてのテンプ
レートを生成するために,特殊な呼び出しが必要なものもあります.例えば,
SGI C++コンパイラは,この変数を以下のように設定します.
libmaude_a_AR = $(CXX) -ar -o
configure
で決定される
オブジェクトに対して使用すべきです(see A Library).
configure
で決定されるオブジェクトに対して使用すべきです
(see Linking).
(`-l',`-L',`-dlopen',そして`-dlpreopen'以外の) プログラム特有のリンカフラグを渡すために`_LDADD'と`_LIBADD' を使用することは不適切です.この目的に対しては,`_LDFLAGS'変数を 使用してください.
例えば,configure.acでAC_PATH_XTRA
を使用している場合,X
のライブラリに対してプログラムをリンクするため,以下のようにすることが
可能でしょう.
maude_LDADD = $(X_PRE_LIBS) $(X_LIBS) $(X_EXTRA_LIBS)
`_DEPENDENCIES'が提供されていない場合,それはAutomakeが考慮します.
自動的に割り当てられる値は`_LDADD'や`_LIBADD'の内容で,ほと
んどのconfigure置換式,`-l',`-L',`-dlopen',
`-dlpreopen',そして`-dlpreopen'オプションは削除されています.
残っているconfigureの置換式は,`$(LIBOBJS)'と`$(ALLOCA)'です.
これらは,生成される`_DEPENDENCIES'に対して無効な値を生成しないこ
とが分かっているので残されます.
maude_LINK = $(CCLD) -magic -o $@
ターゲットごとのコンパイルフラグを使用するとき,Automakeは,中間的なオ ブジェクトファイルに対して異なる名前を選択します.通常, sample.cのようなファイルは,コンパイルされてsample.oが生 成されます.しかし,プログラムの`_CFLAGS'変数を設定した場合,オブ ジェクトファイルは,例えばmaude-sample.oのように命名されます. (renamed objectsも参照して下さい.)
ターゲットごとにフラグを用いてコンパイルする際は,通常の`AM_'形式 のフラグ変数は自動的にコンパイルに組み込まれません(しかし,ユー ザ形式の変数は組み込まれます).そのため,例えば, `AM_CFLAGS'の変数も使用してmaudeのコンパイルを行なうと仮定 すると,以下のように書く必要があります.
maude_CFLAGS = ... your flags ... $(AM_CFLAGS)
bin_PROGRAMS = maude maude_CPPFLAGS = -DSOMEFLAG maude_SHORTNAME = m maude_SOURCES = sample.c ...
オブジェクトファイルはmaude-sample.oではなくm-sample.oと 命名されます.
この機能は,実行上滅多に必要になりませんし,要求されていることが分かる まで使用を避けることを推奨します.