首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在AOSP makefile中` `call inherit-product`和` `include` `有什么区别?

在AOSP makefile中` `call inherit-product`和` `include` `有什么区别?
EN

Stack Overflow用户
提问于 2016-03-31 06:44:15
回答 2查看 5.7K关注 0票数 11

我正在查看Android开源项目的makefile,我看到了包含另一个makefile的两种不同方式。例如,master/build/target/product/aosp_arm64.mk有以下几行:

代码语言:javascript
运行
复制
PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.ethernet.xml:system/etc/permissions/android.hardware.ethernet.xml

$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base_telephony.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/board/generic_arm64/device.mk)

include $(SRC_TARGET_DIR)/product/emulator.mk

PRODUCT_NAME := aosp_arm64
PRODUCT_DEVICE := generic_arm64
PRODUCT_BRAND := Android
PRODUCT_MODEL := AOSP on ARM arm64 Emulator

$(call inherit-product ...)线路和include ...线路有什么不同?

EN

回答 2

Stack Overflow用户

发布于 2016-12-08 00:57:18

include只包含该文件。inherit-product做到了这一点,并在下面的链接中向文件添加了另外三件事:

  1. 继承了$1中的所有变量。
  2. 将继承记录在我们访问过此节点的.INHERITS_FROM variable
  3. Records中,位于ALL_PRODUCTS

有关详细信息core/product.mk,请参阅此文件中的第113行

票数 12
EN

Stack Overflow用户

发布于 2019-05-06 18:12:16

假设在A.mk中有PRODUCT_VAR := a,在B.mk中有PRODUCT_VAR := b

如果你把B.mk包含在A.mk中,你最终会得到PRODUCT_VAR := b

但是如果你在A.mk中inherit-product B.mk,你会得到PRODUCT_VAR := a b

而且inherit-product确保你不会包含两次makefile,因为它是Records that we've visited this node, in ALL_PRODUCTS的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36321050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档