linux makefile 框架分析1

主Makefile

[17] MAKECMDGOALS: 命令行传入的构建对象

[22] __all : 默认目标

[40] sub_make_done: 存在的意义,构建框架存在递归调用的行为,而对于有全局影响的一些变量和规则需要在递归之前处理,因此需要通过 sub_make_done 完成对这些内容的保护,只在第一次进入主makefile的时候才会运行

         MAKEFLAGS: 添加make配置,比如 -rR(禁用隐式规则)

         V: 配置构建输出的打印的量级,KBUILD_VERBOSE

         O: 指定输出目录, KBUILD_OUTPUT,

         abs_objtree: 目标输出路径,如果没有指定O,就是make当前目录CURDIR,(注意:-C 指定目录,CURDIR为-C所指定的目录;-f 指定makefile,CURDIR还是当前make指令运行目录)

                  need-sub-make: 如果abs_objtree 不等于 CURDIR(make O=xxx),则该变量置1

          abs_srctree: 源码目录,即主Makefile所在目录

                  如果 abs_objtree 和 ads_srctree不等(make -f path/to/makefile),need-sub-make = 1,并且 MAKEFLAGS += --include-dir=$(abs_srctree): 指定一个目录搜索makefile

                  this-makefile: 最新的make 解析的makefile,即主Makefile

[177] sub_make_done = 1, 且export: 保证只运行一次

[179] 如果 need-sub-make = 1, 触发sub_make, 使用绝对路径,在主makefile 路径构建主makefile

             make -C $(abs_objtree) -f $(abs_srctree)/Makfefile $(MAKECMDGOALS)

[191] end sub_make_done

[194] ifeq need-sub-make = 0, 即没有触发sub-make,通过这个可以解决触发sub-make时,主makefile的后面部分只会在sub-make中执行,而第一次进入主makefile时后面部分直接跳过,解决递归引起的重复执行问题

         见linux makefile框架分析2

[1906] end need-sub-make

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值