Makefile例子,能够引用子目录下的源文件,并将二进制文件存放到相应目录
MakeFile文件
#目标文件 TARGET=Test #所有的目录 DIR=./fun ./src . #存放obj文件的目录 OBJPATH=./OBJPATH #一次获取目录下所有.c文件 FILES=$(foreach dir,$(DIR),$(wildcard $(dir)/*.c)) #将.c文件替换为.o2文件 OBJS=$(patsubst %.c,%.o,$(FILES)) #目标文件声明 all:$(OBJS) $(TARGET) #根据类型生成依赖进而编译生成.o文件,并且存放到OBJPATH目录下 $(OBJS):%.o:%.c @echo DIR $(DIR) @echo FILES $(FILES) $(CC) -c -o $(OBJPATH)/$(notdir $@) $< #连接所有的二进制文件生成程序 $(TARGET):$(OBJPATH) $(CC) -o $@ $(OBJPATH)/*.o #如果存放二进制文件的目录不存在,则创建 $(OBJPATH): mkdir -p $(OBJPATH) #清除 clean: -rm $(OBJPATH)/*.o -rm $(TARGET)
执行make命令
工程再添加子目录直接MakeFile中的DIR项就行了,
新添加文件或者修改文件名称,则不需要修改Makefile文件。
关于makefile的语法,推荐《跟我一起写makefile》