0
点赞
收藏
分享

微信扫一扫

一步一步理解Makefile

修炼之士 2022-01-08 阅读 47

1.工程文件内容

2.编译过程及运行

 

3.makefile说明

.PHONY:all clean					#解析阶段执行(此行下边部分)

SRCS = $(wildcard *.c)				#获取当前目录下的.c文件
OBJS = $(SRCS:.c=.o)				#把SRCS的所有.c文件改为.o文件存入OBJS
DEPS = $(SRCS:.c=.d)				#把SRCS的所有.c文件改为.d文件存入OBJS
BIN  = mp3
all: $(BIN) $(DEPS)					#DEPS把.d的依赖关系也关联进总依赖树来
ifneq ("$(wildcard $(DEPS))","")	#第一次解析时,DEPS还没有生成,不用包含
include $(DEPS)						#把用-MM产生的(usb.o: usb.c usb.h)所有加入规则中,如果两条规则目标一样,依赖会合并
endif
$(BIN):$(OBJS)						#运行阶段执行(此行下边部分)
	gcc -o $@ $^
%.o:%.c
	gcc -o $@ -c $(filter %.c,$^)	#-c命令是必须依赖与目标一一对应,同时由于.h文件在预编译之后就不需要了
%.d:%.c								
	gcc -MM $^ > $@					#-MM会自动根据.c文件所包含的.h文件查找生成依赖关系
clean:
	rm -f  $(BIN) $(OBJS) $(DEPS)

 

举报

相关推荐

0 条评论