make使用总结(9)-Makefile编写
但是,很多项目工程为了裁剪
简单,一般都在每个源文件的文件夹下编写一个用来获取源文件的文件,一般命名为make.defs
.如下面的这个工程。
工程源码链接:https://download.csdn.net/download/qq_23274715/13765780
工程目录:
顶层的Makefile文件源码:
# 文件说明
# 适用于中小型项目。
# 源文件的获取由每个文件夹下的make.defs获取
BIN := main
OBJPATH := obj
SRCS :=
SRCS += main.c
TOP_DIR:= .
CFLAGS := -O3 -g0 -I./include
VPATH :=
-include src/make.defs
OBJS := $(patsubst %.c, $(OBJPATH)/%.o, $(notdir $(SRCS)))
DEPS := $(patsubst %.c, $(OBJPATH)/%.d, $(notdir $(SRCS)))
CC := gcc
WARNINGS := -Werror -Wall
CFLAGS += $(WARNINGS)
LDFLAGS :=
$(shell if [ ! -d $(OBJPATH) ]; then mkdir -p $(OBJPATH); fi)
$(BIN):$(OBJS)
$(CC) -o $@ $^ $(LDFLAGS)
$(OBJPATH)/%.o:%.c
$(CC) $(CFLAGS) -c -o $@ $<
$(OBJPATH)/%.d:%.c
@$(CC) -MM $(CFLAGS) $< | sed 's,\($*\)\.o[:]*,$(OBJPATH)/\1.o $@:,g' > $@
.PHONY:clean
clean:
rm -f $(OBJPATH)/*.o $(OBJPATH)/*.d $(BIN)
-include $(DEPS)
相对于之前的Makefile,它主要是用-include src/make.defs
引入了各个源文件目录的make.defs
。这样做的优点就是在每个make.defs
中可以控制那些源文件可以添加到项目,那些不需要添加项目。像linux,nuttx等大型项目都使用这种方式。
子文件夹下的make.defs都是如下面的形式。
SRCS += module1_1.c
SRCS += module1_2.c
SRCS += module1_3.c
DEPPATH += --dep-path $(TOP_DIR)/src/module1
VPATH += :$(TOP_DIR)/src/module1
CFLAGS += "-I$(TOP_DIR)/src/module1"
关于技术交流
此处后的文字已经和题目内容无关,可以不看。
qq群:825695030
微信公众号:嵌入式的日常
如果上面的文章对你有用,欢迎打赏、点赞、评论。