C言語のプログラムをコンパイルする場合のように、時間的に依存関係にあるファイルの処理を自動化する場合には make が便利である。
(ひとつ以上の)依存関係名よりターゲットが古い場合にコマンドが実行される。
ターゲット : 依存関係名 ...
(Tab)コマンド
.
.
C言語のプログラム(test.c)から a.out をコンパイルする手順を make によって自動化する方法。
a.out : test.c
cc test.c
make には特定のファイルを処理するために、あらかじめいくつかのルールが設定してある。
例えば、aaa.o がターゲットの場合は aaa.c をコンパイルするものとみなして、Makefile にルールを記述しなくても cc aaa.c を実行してくれる。
この暗黙のルールはユーザーが特定のルールを追加・変更できる。
変数名=変数の値
$(変数名)
コマンド行でターゲット名や依存関係の名前を自動的に得たい場合には下記の自動変数を使用する。
prog : test1.o test2.o
cc -o prog test1.o test2.o
test1.o : test1.c
cc -c -I/aaa/bbb test1.c
test2.o : test2.c
cc -c -I/aaa/bbb test2.c
CFLAGS=-I/aaa/bbb
objs=test1.o test2.o
prog : $(objs)
cc -o prog $(objs)
clean :
rm *.o
上記のルールを記述しておけば、