概述
主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
最后
以上就是无私小甜瓜为你收集整理的linux makefile 框架分析1的全部内容,希望文章能够帮你解决linux makefile 框架分析1所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复