Makefile には,
目的となるもの: 目的のため必要なファイル(複数記述可) [タブ] 実行することという形式で記述される.「実行すること」の手前には必ずタブが必要で ある.例えば,
all: server client
server: server.o
gcc -o server server.o
client: client.o
gcc -o client client.o
server.o: server.c
gcc -Wall -g -c server.c
client.o: client.c
gcc -Wall -g -c client.c
このような Makefile を用意しておけば,
% make
server.o: server.c common.h
gcc -Wall -g -c server.c
client.o: client.c common.h
gcc -Wall -g -c client.c
などとすれば,common.hを編集した際に両方を再度コンパイルしてくれる.
さらに,このように書くこともできる.
CC = gcc
all: server client
server: server.o
$(CC) -o $@ $^
client: client.o
$(CC) -o $@ $^
server.o: server.c common.h
client.o: client.c common.h
.c.o:
$(CC) -Wall -g -c $^
clean:
rm -f server client server.o client.o
このとき,makeコマンドに引数cleanを渡して,
% make clean