Makefile中的这种语法是什么? (A:= $(B。$(C).D))

时间:2015-02-27 12:31:28

标签: android makefile gnu-make

TARGET_DEVICE := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEVICE)

它来自Android makefile。点(。)的使用令我困惑,这是什么样的语法?任何与此语法相关的关键字?

1 个答案:

答案 0 :(得分:1)

这里没什么特别的。

这只是computed variable name扩展。

$ cat Makefile
PRODUCTS.foo.PRODUCT_DEVICE := foo-DEVICE
PRODUCTS.bar.PRODUCT_DEVICE := bar-DEVICE

INTERNAL_PRODUCT := foo
TARGET_DEVICE := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEVICE)

$(info INTERNAL_PRODUCT is $(INTERNAL_PRODUCT))
$(info TARGET_DEVICE is $(TARGET_DEVICE))

INTERNAL_PRODUCT := bar
TARGET_DEVICE := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEVICE)

$(info INTERNAL_PRODUCT is $(INTERNAL_PRODUCT))
$(info TARGET_DEVICE is $(TARGET_DEVICE))
$ make
INTERNAL_PRODUCT is foo
TARGET_DEVICE is foo-DEVICE
INTERNAL_PRODUCT is bar
TARGET_DEVICE is bar-DEVICE