【问题标题】:What kind of syntax is this in Makefile? (A := $(B.$(C).D))Makefile 中有什么样的语法? (A := $(B.$(C).D))
【发布时间】:2015-04-30 04:08:43
【问题描述】:
TARGET_DEVICE := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEVICE)

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

【问题讨论】:

    标签: android makefile gnu-make


    【解决方案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
    

    【讨论】:

    • 我现在看到,PRODUCTS.foo.PRODUCT_DEVICE 是在其他地方定义的。感谢您的帮助。
    猜你喜欢
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 2016-11-04
    • 1970-01-01
    相关资源
    最近更新 更多