自 2025 年 3 月 27 日起,我们建议您使用 android-latest-release
而非 aosp-main
构建 AOSP 并为其做出贡献。如需了解详情,请参阅 AOSP 的变更。
递归展开
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
不要在产品/板配置 makefile 中使用递归扩展。递归扩展是在生成文件中使用原始=
而不是:=
进行变量赋值。它会导致设置为其他变量值的变量在评估它们自己之前不评估这些其他变量。这是 Starlark 不支持的功能。
删除它在很大程度上取决于它的使用方式的具体场景。大多数情况下,它涉及将变量分配移动到使用它们的位置之前。例如,替换:
MY_VAR_2 = foo
# Some stuff in between...
MY_VAR = $(MY_VAR_2)
MY_VAR_2 = bar
# $(MY_VAR) is bar here.
和:
MY_VAR_2 := foo
# Some stuff in between...
MY_VAR_2 := bar
MY_VAR := $(MY_VAR_2)
# $(MY_VAR) is bar here.
如果该变量之前没有通过简单扩展分配给使用+=
附加到变量,则使用递归扩展。如果您不确定变量之前是否已分配,可以将+=
替换为MY_VAR := $(strip $(MY_VAR) new_value)
。
即使在转换为 Starlark 之前,删除延迟扩展也可以加快对 Makefile 的评估。如果将变量设置为昂贵函数调用的结果,则该函数只会通过简单扩展调用一次,但可能会通过递归扩展调用多次。
本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2022-06-06。
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2022-06-06。"],[],[]]