有時候會遇到這種情況,比如在學習研究的過程中,一個目錄下寫了很多c語言的源文件,每個都是單獨可執行的。可能每個都是一個單獨的示例。
這時候需要一個makefile,可以單獨將每一個文件編譯成一個可執行文件,不用每寫一個文件便得gcc -c xxx.c -o xxx。
下面是一個簡單的寫法:可以將當前目錄下所有xxx.c文件編譯成單獨的xxx文件。
PHONY: all clean
SRC=$(wildcard *.c)
OBJ=$(SRC:%.c=%.o)
BIN=$(OBJ:%.o=%)
CC=gcc
CFLAGS=-Wall -g -c
all:$(BIN)
$(BIN):%:%.o
$(CC) $^ -o $@
$(OBJ):%.o:%.c
$(CC) $(CFLAGS) $^ -o $@
clean:
rm $(OBJ) $(BIN)
如果使用自動推導的話,可以更簡單:
.PHONY: all clean
SRC=$(wildcard *.c)
BIN=$(SRC:%.c=%)
CC=gcc
#CFLAGS=-Wall -g -c
all:$(BIN)
clean:
rm $(BIN)