Makefile例子,能够引用子目录下的源文件,并将二进制文件存放到相应目录

时间:2021-02-04 12:48:47

Makefile例子,能够引用子目录下的源文件,并将二进制文件存放到相应目录

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例子,能够引用子目录下的源文件,并将二进制文件存放到相应目录

工程再添加子目录直接MakeFile中的DIR项就行了,

新添加文件或者修改文件名称,则不需要修改Makefile文件。


关于makefile的语法,推荐《跟我一起写makefile》

http://seisman.info/how-to-write-makefile.html