文章目录
- 1. make -f ./scripts/Makefile.build obj=scripts
- 1.1 执行 $(subdir-ym)
1. make -f ./scripts/Makefile.build obj=scripts
由《1. make -f ./scripts/Makefile.build obj=XXX》 分析可知:
1. 在《1.1 引用文件》中引用./scripts/Makefile
、scripts/Makefile.lib
和scripts/Makefile.host
等,由此分析可知:
$(builtin-target):$(obj-y) 、$(obj-m) 、$(obj-)、 $(subdir-m) 、$(lib-target)未定义为空
;
$(lib-target):$(lib-y)、$(lib-m)、$(lib-)未定义为空
;
$(extra-y):未定义为空
;
$(subdir-ym)=$(obj)/dtc
;
$(always) :未定义为空
;
2. 由步骤1中的定义可知,在《1.2 创建 $(builtin-target)》中,什么都不做;
3. 由步骤1中的定义可知,在《1.3 创建 $(lib-target)》中,什么都不做;
4. 由步骤1中的定义可知,在《1.4 创建 $(extra-y)》中,什么都不做;
5. 由步骤1中的定义可知,在《1.5 创建 $(subdir-ym)》中,执行《1.1执行 $(subdir-ym)》, 回显 38-53
6. 由步骤1中的定义可知, 在《1.6 创建 $(always)》中,什么都不做;
1.1 执行 $(subdir-ym)
由《1.5 创建 $(subdir-ym)》可知:
# scripts/Makefile.build subdir-ym = $(sort $(subdir-y) $(subdir-m)) subdir-ym := $(addprefix $(obj)/,$(subdir-ym)) 418 $(subdir-ym): 419 make ./scripts/Makefile.build obj=$@
在《1. make -f ./scripts/Makefile.build obj=scripts》中定义:
$(subdir-ym)=$(obj)/dtc
,$(obj)=scripts
,所以最终展开为:# scripts/Makefile.build 418 scripts/dtc: 419 make ./scripts/Makefile.build obj=scripts/dtc
由上可知,目标只有创建命令没有依赖,接下来执行目标的创建命令即可。 回显 38
- 命令的执行说明:
由《1. make -f ./scripts/Makefile.build obj=XXX》 分析可知:
1. 在《1.1 引用文件》中引用./scripts/Makefile
、scripts/Makefile.lib
和scripts/Makefile.host
等,由此分析可知:
$(builtin-target):$(obj-y) 、$(obj-m) 、$(obj-)、 $(subdir-m) 、$(lib-target)未定义为空
;
$(lib-target):$(lib-y)、$(lib-m)、$(lib-)未定义为空
;
$(extra-y):未定义为空
;
$(subdir-ym)=$(obj)/dtc
;
$(always) :未定义为空
;
2. 由步骤1中的定义可知,在《1.2 创建 $(builtin-target)》中,什么都不做;
3. 由步骤1中的定义可知,在《1.3 创建 $(lib-target)》中,什么都不做;
4. 由步骤1中的定义可知,在《1.4 创建 $(extra-y)》中,什么都不做;
5. 由步骤1中的定义可知,在《1.5 创建 $(subdir-ym)》中,执行《1.1执行 $(subdir-ym)》, 回显 37-53
6. 由步骤1中的定义可知, 在《1.6 创建 $(always)》中,什么都不做;