一个通用的Makefile模板 使用前需要在当前目录下建立一个obj文件夹,用来存放中间文件。*.d文件中包含了对应*.c的依赖文件,*.o文件为对应*.c文件的目标文件。 详细的Makfile资料可以看看GNU make中文手册和跟我一起写Makefile Makefile通用模板CC=gcc CFLAGS=-Wall OBJPATH=obj # .d文件和.o文件保存路径 TARGET=demo # 最终可执行文件 default: $(TARGET) SOURCE=a.c b.c # 需要编译的.c文件 INCLUDE= # 获取.d文件名集合 DEPS=$(addprefix $(OBJPATH)/, $(patsubst %.c, %.d, $(filter %.c, $(SOURCE)))) # 获取.o文件名集合 OBJS=$(addprefix $(OBJPATH)/, $(addsuffix .o, $(basename $(SOURCE)))) -include $(DEPS) # 生成.d文件 $(OBJPATH)/%.d: %.c $(CC) $(INCLUDE) -MM $< | sed "1s|^|$(dir $@)|" |" sed "1{x;s|.*|$@: $<|;G;}" > $(basename $@).d # 生成.o文件 $(OBJPATH)/%.o : %.c $(CC) $(CFLAGS) -o $@ -c $< # 链接成可执行文件 $(TARGET): $(OBJS) $(CC) $(CFLAGS) -o $@ $^ # 清理 clean: rm -rf $(OBJPATH)/*.d $(OBJPATH)/*.o $(TARGET)