プログラミングユーティリティ

暗黙の規則

make は、接尾辞のテーブルおよび複数の変換規則を使用して、デフォルトの依存関係およびコマンドを指定します。デフォルトの接尾辞のリストを、デフォルトの順序で以下に示します。

.o

オブジェクトファイル

.c

C ソースファイル

.c‾

SCCS C ソースファイル

.y

yacc C ソースの文法

.y‾

SCCS yacc C ソースの文法

.l

lex C ソースの文法

.l〜

SCCS lex C ソースの文法

.s

アセンブラソースファイル

.s‾

SCCS アセンブラソースファイル

.sh

シェルファイル

.sh‾

SCCS シェルファイル

.h

ヘッダーファイル

.h‾

SCCS ヘッダーファイル

.f

FORTRAN ソースファイル

.f‾

SCCS FORTRAN ソースファイル

.C

C++ ソースファイル

.C‾

SCCS C++ ソースファイル

.Y

yacc C++ ソースの文法

.Y‾

SCCS yacc C++ ソースの文法

.L

lex C++ ソースの文法

.L‾

SCCS lex C++ ソースの文法

図 A-1 は、デフォルトの変換過程を示しています。同じ接尾辞に接続する過程が 2 とおりある場合、2 つの段階を経る過程は、中間ファイルがある場合または記述ファイル中に指定されている場合にのみ使用されます。

図 A-1 デフォルトの変換過程のまとめ

Graphic

ファイル x.o が必要で、x.c が記述ファイル中またはディレクトリにある場合は、x.o がコンパイルされます。x.l というファイルもある場合は、そのソースファイルは lex で処理されてからコンパイルされます。ただし、x.c はないが x.l はある場合は、図 A-1 で示すように、make は C の中間ファイルを破棄して直接リンクを使用します。

マクロ名がわかっていれば、デフォルトで使用されるコンパイラ名またはコンパイラを呼び出す際に引数として使用するフラグを変更できます。コンパイラ名を示すマクロは、ASCCC++CF77YACCLEX です。以下のコマンドは、通常の C コンパイラの代わりに newcc コマンドを使用するように指定します。

$ make CC=newcc

CFLAGSYFLAGSLFLAGSASFLAGSFFLAGSC++FLAGS の各マクロは、フラグを使用して実行できます。以下に例を示します。

$ make CFLAGS=-g

このコマンドは、cc コマンドがデバッグ情報を取り込むようにします。