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

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 ...行之间有什么区别?

最佳答案

include仅包含文件。 inherit-product可以做到这一点,另外还有三件事要在下面的链接中归档:

  • 继承$ 1的所有变量。
  • 在.INHERITS_FROM变量
  • 中记录继承
  • 在ALL_PRODUCTS
  • 中记录了我们访问过此节点的记录

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

    09-15 16:51