案例一、自动编译多个.c构成的项目,即把所有的.c编译成同一个可执行文件
#自动编译多个.c构成的项目,即把所有的.c编译成同一个可执行文件
CC:=gcc
CFLAGS:=-Wall -g
SRC:=${wildcard *.c} #将当前目录下的以.c为后缀的文件名赋给SRC
OBJ:=${patsubst %.c,%.o,$(SRC)}#将Src中以.c为后缀的字符串替换成.o为后缀赋给OBJ
test:$(OBJ)
$(CC) -o $@ $^ $(CFLAGS)
%.o:%.c
$(CC) -o $@ -c $< $(CFLAGS)
.PHONY:clean print
clean:
rm -f *.o test .*.sw?
print:
@echo $(SRC)
@echo $(OBJ)
案例二、当前目录下所有.c文件编译为单独的可执行目标文件
#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)
案例三、该Makefile只针对单文件程序
C