gpt4 book ai didi

android - ASOP makefile 的这一部分是如何工作的?

转载 作者:行者123 更新时间:2023-11-29 00:25:54 24 4
gpt4 key购买 nike

我正在尝试修改 AOSP 构建系统以在“make dist”之后运行脚本

我的代码可以实现我想要的功能……但我并不真正理解它,希望得到解释以及正在发生的事情。我正在查看的文件是:

https://android.googlesource.com/platform/build.git/+/master/core/distdir.mk

.PHONY: dist
dist: ;

dist_goal := $(strip $(filter dist,$(MAKECMDGOALS)))
MAKECMDGOALS := $(strip $(filter-out dist,$(MAKECMDGOALS)))
ifeq (,$(strip $(filter-out $(INTERNAL_MODIFIER_TARGETS),$(MAKECMDGOALS))))
# The commandline was something like "make dist" or "make dist showcommands".
# Add a dependency on a real target.
dist: $(DEFAULT_GOAL)
endif

让我感到困惑的部分是 dist: 有两个定义,但没有警告。如果我在第二个 dist: target 上有一个食谱,它将生成一个关于 dist 被重新定义的警告。第二个目标有什么意义?

最佳答案

dist: ;

只是说,“要更新 dist 目标,什么都不做”。如果没有这个,如果第二部分不存在,Make 将不知道如何制作 dist。 (事实上​​ ; 这里的“空配方”并不是真正需要的 - 它只在特定情况下需要,这不是其中之一 - 没有它,你仍然会在这里“无所事事” )

如果存在第二部分:

dist: $(DEFAULT_GOAL)

这意味着,“要更新 dist 目标,请更新 $(DEFAULT_GOAL)

如果两个部分都存在,我们更新 $(DEFAULT_GOAL) 然后什么都不做。

一般来说,您可以为目标制定一个明确的规则,并提供一个配方(此处,配方只是;),然后您可以拥有其他没有配方的规则,它们只是建立额外的所指出的依赖关系。执行哪个配方没有歧义,Make 很高兴。

关于android - ASOP makefile 的这一部分是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19506465/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com