Provided by:
xmanpages-ja_4.1.0.20011224-6_all 
imake作
imake は、コマンド行で -I オプションや -D オプ ションを渡してcpp
を起動し、次の内容を持つファイル名を渡す。
#define IMAKE_TEMPLATE "Imake.tmpl"
#define INCLUDE_IMAKEFILE <Imakefile>
#include IMAKE_TEMPLATE
このとぁImake.tmpl の部分はコマンドの -T オプションで書 -
換えられることがあり、Imakefile の部分は -f オプション で書-
換えられることがある。
IMAKE_TEMPLATE は通常、マシン依存のパラメータ(cpp のシンボルで指
定する)が書かれたファイル、サイト特佑離僖薀瓠璽織侫.ぅ襦∧竸瑤鯆蟲
するファイル、make を生成するための cpp のマクロ関数が書か
れたファイル、カレントディレクトリの Imakefile (INCLUDE_IMAKEFILE
で指定する)を読む。Imakefile は、このマクロ関 数を用いて生成すべ-
対象を示す。imake は、責任を持って適切な規則 を生成する。
Imake の設定ファイルは、2つのタイプの変数を持つ。すなわち、imake 変数と
make 変数である。imake 変数は imake を実行した際に cpp
によって解釈される。慣習により、imake 変数の名前は
大文字と小文字が混ざった形となる。make 変数は Makefile に書-
込まれ、後で make に解釈される。 慣習により、make
変数の名前は大文字で書かれる。
規則ファイル(通常は設定ディレクトリの Imake.rules)には、現在のプ
ラットフォームにしたがって設定された cpp マクロ関数群が欺劼気
ている。マクロが複数行の make 規則を生成でい襪茲Δ法 imake は文字列
``@@'' が現れると、これを改行に置ご垢┐襦 例えば、次のマクロ
#define program_target(program, objlist) @@\
program: objlist @@\
$(CC) -o $@ objlist $(LDFLAGS)
は、 program_target(foo, foo1.o foo2.o) で呼ばれたとぁ
foo: foo1.o foo2.o
$(CC) -o $@ foo1.o foo2.o $(LDFLAGS)
のように展開される。
imake は ``XCOMM'' が現れると、これを ``#'' 文字に置換する。
これにより、プリプロセッサに ``invalid directive'' エラーを出させるこ
となく Makefile にコメントを置くことがでい襦
複雑な imake の場合、生成される make 変数がマクロのそれぞ
れの呼び出しにおいて局所世必要なことがある。これはしばしば、その値
がマクロに渡されるパラメータに依存するために起こる。
このような変数は、XVARdefn の形式の imake 変数を使っ て作ることがで-
る。ここで、n は1桁の数字である。 一意に決まる make
には代入が行われる。後で変数 XVARusen が現れたとぁ△海譴和弍する
XVARdefn によって生成された変数に置ご垢┐蕕譴襦
cpp が複数のタブや空白を1つの空白に減らすようなシステムにおいて
は、imake は必要なタブを戻そうと試みる(make はタブと空白の
違いに大変厳しい)。このため、コマンド行ではコロン(:)の前にバックス
ラッシュ(\)を置かなければならない。
X用
X ウィンドウシステムは、ソースからのシステム全体の構築と外部ソフトウェ
アの構築の両方で imake を垢用いる。先に述べたように、相対パス
名を用いたファイルの参照を容易にするために2つの特別な変数 TOPDIR と
CURDIR がセットされる。例えば、lib/X/ における Makefile
を作るため、次のコマンドが自動的に生成される(ソースの最
上位ディレクトリからの相対パス):
% ../.././config/imake -I../.././config \
-DTOPDIR=../../. -DCURDIR=./lib/X
ソースツリーに含まれない X のプログラムを構築する際には、特殊なシンボ
ル UseInstalled が定義され、TOPDIR と CURDIR は無視
される。設定ファイルが正しくインストールされていれば、スクリプト
xmkmf(1) を使うことがでい襦
ル
X に使われるとい imake が読むファイルについての概略を示す。
字下げは、他のファイルをインクルードすることを示す。
Imake.tmpl 一般的な変数
site.def サイト固諭BeforeVendorCF が定義される
*.cf マシン固
*Lib.rules 共優薀ぅ屮薀蠅竜則
site.def サイト固諭AfterVendorCF が定義される
Imake.rules 規則
Project.tmpl X 特佑諒竸
*Lib.tmpl 共優薀ぅ屮薀蠅砲弔い討諒竸
Imakefile
Library.tmpl ライブラリについての規則
Server.tmpl サーバについての規則
Threads.tmpl マルチスレッドについての規則
site.def は2度インクルードされる点に注意せよ。1度目は *.cf
ファイルの前で、次はこのファイルの後である。サイトにおけるカスタマイズ
のほとんどは *.cf ファイルの後でなければならないが、コンパイラの
選択のように先に指定しなければならないものもある。他の変数設定がこれら
に依存しているからである。
最初に site.def をインクルードしたとい砲亙竸 BeforeVendorCF
が定義され、2度目にインクルードしたとい砲亙竸 AfterVendorCF が定義さ
れる。site.def の全てのコードはどちらかのシンボルについての #ifdef
の内側に置かれているはずである。
ル
Imakefile.c cpp の入力に使う一時ファイル
/tmp/Imf.XXXXXX -s のための一時的な Makefile
/tmp/IIf.XXXXXX 指定した Imakefile が #
形式のコメントを使っている場合の一時的な Imakefile
/lib/cpp デフォルトの C プリプロセッサ
目
make(1), xmkmf(1)
S. I. Feldman, Make --
_
数
以下の環曲竸瑤鮴瀋蠅垢襪海箸でい襦ただし、これらは imake が
実行されるとい僕動廚砲呂錣らない依存関係をもたらすため、あまり使わな
いほうがよい。
IMAKEINCLUDE
この環曲竸瑤定義された場合、C プリプロセッサにインクルードの引た
``-I'' を渡すことを指定。例: ``-I/usr/X11/config''.
IMAKECPP
この環曲竸瑤定義された場合、これはプリプロセッサのプログラムの-
効な パスでなければならない。 例: ``/usr/local/cpp''.
デフォルトでは、 imake は /lib/cpp を用いる。
IMAKEMAKE
この環曲竸瑤定義された場合、これは ``/usr/local/make'' のような
make プログラムの邑なパスでなければならない。 デフォルトでは、
execvp(3) を使って見つけた make を使用する。 この環-
変数が使用されるのは、``-e'' オプションが指定されたとい世韻
ある。
者
Todd Brunhoff, Tektronix and MIT Project Athena; Jim Fulton, MIT X
Consortium