最近研究Makefile,以下列出两个利用编译器自动生成文件依赖关系的Makefile例子:
第一个例子
#最终要生成的可执行文件名称 TARGET = test #目标文件的集合及存储的位置 OBJNAME = main.o dlist.o OBJDIR = ./obj DEPENDDIR = ./depend #C编译器及编译参数 CC = gcc CFLAGS = -Wall -g #C连接器及连接参数 LD = gcc LDFLAGS =
.PHONY:all clean all: $(TARGET)
#默认启动调试模式 $(TARGET):$(OBJNAME) $(LD) $(LDFLAGS) -o $@ $^ clean: rm -f $(TARGET) $(OBJNAME) ./*.d include $(OBJNAME:.o=.d) %.d: %.c set -e; rm -f $@; $(CC) -MM $(CPPFLAGS) $< > $@.$$$$; sed 's,($*).o[ :]*,1.o $@ :,g' < $@.$$$$ > $@; rm -f $@.$$$$
第二个例子
#最终要生成的可执行文件名称 TARGET = test #目标文件的集合及存储的位置 OBJS = dir/main.o dir/dlist.o OBJDIR = obj DEPENDDIR = depend #C编译器及编译参数 CC = gcc CFLAGS = -Wall -g #C连接器及连接参数 LD = gcc LDFLAGS =
.PHONY:all clean all: $(TARGET)
#默认启动调试模式 $(TARGET):$(subst dir,$(OBJDIR),$(OBJS)) $(LD) $(LDFLAGS) -o $@ $^ clean: rm -f $(TARGET) $(subst dir,$(OBJS)) $(DEPENDDIR)/*.d include $(subst .o,.d,$(subst dir,$(DEPENDDIR),$(OBJS))) $(DEPENDDIR)/%.d: %.c @set -e; rm -f $@; $(CC) -MM $(CPPFLAGS) $< > $@.$$$$; sed 's,$(OBJDIR)/1.o $@ :,g' < $@.$$$$ > $@; rm -f $@.$$$$ $(OBJDIR)/%.o:%.c $(COMPILE.c) $(OUTPUT_OPTION) $< (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|