次: , 前: Strictness, 上: Generalities


2.3 一様な命名法

Automake変数は,一般に以下の一様な命名法(uniform naming scheme) に従っていて,それは,プログラム(とその他の派生されるオブジェクト)のビ ルド方法と,それらのインストール方法の決定を容易にします.この手法は, configure時にビルドするものを決定することもサポートしています.

make時にビルドするオブジェクトを決定するため,特定の変数を使用 します.変数の名前は,いくつかの部品をお互いに連結したものからできてい ます.

ビルドするものをautomakeに伝える部品は,一般にプライマリと呼ばれ ています.例えば,プライマリのPROGRAMSは,コンパイルされリンク されるプログラムのリストを保持しています. ビルドしたオブジェクトをインストールする場所を決定するため,異なる名前 の組が使用されます.これらの名前はプライマリに前置されていて,それはイ ンストールするディレクトリとして使用される標準的なディレクトリを示して います.標準的なディレクトリ名はGNUの標準で与えられています (see Directory Variables). Automakeは,pkglibdirpkgincludedir,そして pkgdatadirを用いて,このリストを拡張します.これらは非 `pkg'のバージョンと同じですが,`$(PACKAGE)'が付加されます. 例えば,pkglibdir$(libdir)/$(PACKAGE)として定義されま す. それぞれのプライマリに対して,`EXTRA_'をプライマリ名に前置して命 名された追加の変数があります.この変数は,ビルドされたりされなかったり する可能性のあるオブジェクトのリストで使用され,それは, configureが決定したものに依存します.Automakeは,すべての状況で 動作するMakefile.inを生成するために,ビルドされる可能性のあるオ ブジェクト全体のリストをあらかじめ知っておく必要があるので,この変数が 必要になります.

例えば,cpioはconfigure時にビルドするプログラムを決定します. bindirにインストールされるプログラムもあれば,sbindirに インストールされるものもあります.

     EXTRA_PROGRAMS = mt rmt
     bin_PROGRAMS = cpio pax
     sbin_PROGRAMS = $(MORE_PROGRAMS)

接頭辞がないプライマリを変数として定義すること,例えばPROGRAMS はエラーになります.

一般的な`dir'接尾辞は,変数名を作るときには捨てられることに注意し て下さい.このため,`bindir_PROGRAMS'ではなく, `bin_PROGRAMS'と書きます.

すべての種類のオブジェクトが,すべてのディレクトリにインストールされる わけではありません.Automakeはエラーを見つけたとき,フラグを付けようと します.Automakeはディレクトリ名での明らかなスペルミスも診断します.

標準ディレクトリは — Automakeによって強化されてはいますが — 十分で ない場合もあります.特に,前もって定義されているディレクトリのサブディ レクトリにオブジェクトをインストールすると役に立つこともあります.この ため,Automakeはインストール可能なディレクトリのリストを拡張することを 可能にします.与えられている接頭辞(例えば`zar')は,同じ名前の変数 に`dir'を付加した変数(例えばzardir)が定義されている場合に 有効です.

例えば,HTMLファイルのインストールはAutomakeの一部ですが,以下のように して生のHTMLドキュメントをインストール可能です.

     htmldir = $(prefix)/html
     html_DATA = automake.html

特別な接頭辞`noinst'は,該当するオブジェクトをビルドしインストー ルは決して行なわないことを示します.これは,パッケージ残りのビルドで必 要なオブジェクト,例えば,スタティックライブラリ(see A Library)や, 補助的なスクリプトに対して有効です.

特別な接頭辞`check'は,該当するオブジェクトがmake checkコ マンドが実行されるまでビルドされないことを示します.これらのオブジェク トはインストールもされません.

現在のプライマリ名は,`PROGRAMS',`LIBRARIES',`LISP', `PYTHON',`JAVA',`SCRIPTS',`DATA', `HEADERS',`MANS',そして`TEXINFOS'です. automakeの動作の他の側面を制御する,追加の接頭辞が可能なプライ マリもあります.現在定義されている接頭辞は,`dist_', `nodist_',そして`nobase_'です.これらの接頭辞は後で説明しま す(see Program and Library Variables).