通用makefile的一种写法,包含子目录makefile

最近写的小项目文件越来越多,也加了一些子目录,就增加了子目录makefile,总结了一种写法分享给小伙伴

先看效果,

 

 有几个目录common,drv,main,执行主目录makefile,会逐个进入这几个子目录调用子目录的makefile进行编译,clean的时候也是进入子目录进行make clean。

主目录makefile内容:

###进入子目录make,编译指定的.c文件为.o文件
target=load_main
export c1:=
export INCDIRS:=common drv
SRCDIRS=common drv main
PJTDIR:=$(shell pwd)
INC_PATH=$(addprefix -I ,$(INCDIRS))
SRCFILES:=$(foreach dirobj,$(SRCDIRS),$(wildcard $(dirobj)/*.c))
#OBJS:=$(patsubst %.c,%.o,$(SRCFILES))
export OBJS:=
include common/files.mk
include drv/files.mk
include main/files.mk
inc_files:=$(foreach incfile,$(SRCDIRS),include $(incfile)/files.mk)

LIBPATH=
rm_obj:=$(wildcard $(OBJS))
$(target):$(SRCDIRS)
#    echo $(OBJS)
    $(c1)gcc -o $@ $(OBJS) $(INC_PATH) -lpthread
$(SRCDIRS):ECHO
    make -C $@
#    OBJS+=$(wildcard $@/*.o)
#    @echo $(OBJS)
ECHO:
#    @echo $(SRCDIRS)    

print:
    echo incpath:$(INCPATH)
    #@echo objs:$(OBJS)
    
debug:
    make print -C main

.PHONY : clean
clean:
    @for bdir in $(SRCDIRS);\
    do \
    make clean -C $$bdir;\
    done
    rm $(target)

子目录可以根据files.mk指定要编译的文件

 子目录makefile:

 makefile主要内容就这些了,源文件都是简单的打印就不列出来了

这样写法可以在主makefile不改变的情况下,源码文件增加只需要增加子目录以及子目录内的makefile,files.mk,然后在主目录执行make就可以了

完整版连接:通用makefile的一种写法-Linux文档类资源-CSDN下载

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值