make は、接尾辞のテーブルおよび複数の変換規則を使用して、デフォルトの依存関係およびコマンドを指定します。デフォルトの接尾辞のリストを、デフォルトの順序で以下に示します。
オブジェクトファイル
C ソースファイル
SCCS C ソースファイル
yacc C ソースの文法
SCCS yacc C ソースの文法
lex C ソースの文法
SCCS lex C ソースの文法
アセンブラソースファイル
SCCS アセンブラソースファイル
シェルファイル
SCCS シェルファイル
ヘッダーファイル
SCCS ヘッダーファイル
FORTRAN ソースファイル
SCCS FORTRAN ソースファイル
C++ ソースファイル
SCCS C++ ソースファイル
yacc C++ ソースの文法
SCCS yacc C++ ソースの文法
lex C++ ソースの文法
SCCS lex C++ ソースの文法
図 A-1 は、デフォルトの変換過程を示しています。同じ接尾辞に接続する過程が 2 とおりある場合、2 つの段階を経る過程は、中間ファイルがある場合または記述ファイル中に指定されている場合にのみ使用されます。
ファイル x.o が必要で、x.c が記述ファイル中またはディレクトリにある場合は、x.o がコンパイルされます。x.l というファイルもある場合は、そのソースファイルは lex で処理されてからコンパイルされます。ただし、x.c はないが x.l はある場合は、図 A-1 で示すように、make は C の中間ファイルを破棄して直接リンクを使用します。
マクロ名がわかっていれば、デフォルトで使用されるコンパイラ名またはコンパイラを呼び出す際に引数として使用するフラグを変更できます。コンパイラ名を示すマクロは、AS
、CC
、C++C
、F77
、YACC
、LEX
です。以下のコマンドは、通常の C コンパイラの代わりに newcc コマンドを使用するように指定します。
$ make CC=newcc
CFLAGS
、YFLAGS
、LFLAGS
、ASFLAGS
、FFLAGS
、C++FLAGS
の各マクロは、フラグを使用して実行できます。以下に例を示します。
$ make CFLAGS=-g