Makefile 嵌套执行

一、嵌套执行的概念

    在一些大的工程中,我们会把我们不同模块或是不同功能的源文件放在不同的目录中,我们可以在每个目录中都书写一个该目录的Makefile,这有利于让我们的Makefile变得更加地简洁,而不至于把所有的东西全部写在一个Makefile中,这样会很难维护我们的Makefile,这个技术对于我们模块编译和分段编译有着非常大的好处。

二、示例目录结构

nest
├─dir1
│	└─Makefile		#1级Makefile
├─dir2
│	└─Makefile		#1级Makefile
└─Makefile			#0级顶层Makefile

三、Makefile内容

0级顶层Makefile

all:
	@echo $(MAKELEVEL)
	@make -C dir1
	@make -C dir2

dir1 Makefile

all:
	@echo "in dir1"
	@echo $(MAKELEVEL)

dir2 Makefile

all:
	@echo "in dir2"
	@echo $(MAKELEVEL)

四、执行结果

0
make[1]: 进入目录“/home/fly1000fans/source/makefiledir/nest/dir1”
in dir1
1
make[1]: 离开目录“/home/fly1000fans/source/makefiledir/nest/dir1”
make[1]: 进入目录“/home/fly1000fans/source/makefiledir/nest/dir2”
in dir2
1
make[1]: 离开目录“/home/fly1000fans/source/makefiledir/nest/dir2”

五、结论

执行 make -C subdirs会进行make的嵌套调用,MAKELEVEL为当前Makefile的调用等级,最上层Makefile为0级

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值