make使用总结(9)-Makefile编写

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
微信公众号:嵌入式的日常
如果上面的文章对你有用,欢迎打赏、点赞、评论。二维码

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

theboynoName

感谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值