think - edit - make - test ...Makefile の記述法
構築方法の前には[TAB]を置く。(spaceではだめ) つまらない Makefileの例target ...: [依存関係(file)] [構築方法(command)] ....
Cプログラムをコンパイルするための Makefileの例testfile: ls testfile touch testfile ls testfile
ターゲット作成に必要なファイルを別のターゲットとして 書くことができる。# Makefile example go: go.c cc -o go go.c
実際のプログラムでは複数の C ソースファイルから一つの 実行ファイルを作成することが多い。# Makefile example batch: a b cat a b > batch b: echo "b" > b a: echo "a" > a c: echo "ccc"
main.c または data.c のどちらかに変更があった場合には、 対応する .o ファイルがコンパイルによって作られ、program は main.o と data.o を結合して作られる。 最後の2つのターゲットは中間ファイルと実行ファイルの 削除に用いられる。# Makefile example program: main.o data.o cc -o program main.o data.o main.o: main.c cc -c main.c data.o: data.c cc -c data.c clean: rm program main.o data.o
暗黙のルールの利用
COMPILE.c=$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c LINK.c=$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)
# Makefile example CC=gcc CFLAGS=-O LDFLAGS=-lm objs=main.o data.o program: $(objs) $(CC) $(LDFLAGS) -o program $(objs) main.o: main.c program.h data.o: data.c program.h clean: rm program $(objs)