2016-03-30 16 views
3

Ich schaue durch die Android Open Source Project Makefiles, und ich sehe, wie es scheint, zwei verschiedene Möglichkeiten, ein anderes Makefile aufzunehmen. Zum Beispiel hat master/build/target/product/aosp_arm64.mk diese Zeilen:Unterschied zwischen Call-Erben-Produkt und Include in AOSP Makefiles?

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 

Was ist der Unterschied (n) zwischen der $(call inherit-product ...) Linie und der include ... Linie?

+0

'$ (call erben Produkt , $ (SRC_TARGET_DIR) /product/core_64_bit.mk) 'ist keine Möglichkeit, ein anderes Makefile einzufügen. Es ist ein [Aufruf an die benutzerdefinierte Make-Funktion] (https://www.gnu.org/software/make/manual/html_node/Call-Function.html) 'erben-Produkt' mit dem Argument' $ (SRC_TARGET_DIR)/product/core_64_bit.mk'. Um zu wissen, dass diese Funktion müssen Sie nach seiner Definition suchen. –

Antwort

3

include enthält nur die Datei. inherit-product macht das und drei weitere Dinge accordig zu Datei in Verbindung unten:

  1. Erbt alle Variablen von $ 1.
  2. Zeichnet die Vererbung in der .INHERITS_FROM Variable
  3. Datensätze, die wir diesen Knoten besucht haben, in ALL_PRODUCTS

Siehe Zeile 113 in dieser Datei für Details core/product.mk