有时候会遇到这种情况,比如在学习研究的过程中,一个目录下写了很多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)