Wei*_*ena 7 gnu-make android-source
我正在浏览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
Run Code Online (Sandbox Code Playgroud)
$(call inherit-product ...)线和include ...线之间有什么区别?
include仅包含文件。inherit-product这样做,还有另外三件事要在下面的链接中提交:
请参阅此文件中的第113行以获取详细信息core / product.mk
小智 5
假设您PRODUCT_VAR := a在 A.mk 和PRODUCT_VAR := bB.mk 中都有。
如果你把B.mk包含在A.mk中,你就会得到PRODUCT_VAR := b最后的结果。
但如果你inherit-product在 A.mk 中 B.mk,你会得到PRODUCT_VAR := a b.
并inherit-product确保您不会两次包含 makefile,因为它Records that we've visited this node, in ALL_PRODUCTS。