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

What kind of syntax is this in Makefile? (A := $(B.$(C).D))

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

它来自 Android 生成文件。点(。)的使用让我感到困惑,这是什么语法?任何与此语法相关的关键字?

这里没什么特别的。

这只是一个 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