我正在查看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 ...
行之间有什么区别?
答案 0 :(得分:4)
include
只包含该文件。 inherit-product
会做到这一点以及下面链接中提到的另外三件事:
有关详细信息core/product.mk
,请参阅此文件中的第113行答案 1 :(得分:0)
假设您在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
。