如何在make文件中替换“%”中的字符串

时间:2018-05-23 18:14:21

标签: docker makefile

我有跟Dockerfile的文件夹

  • 构建
    • PATH1
      • V1
        • Dockerfile
      • V2
        • Dockerfile
    • PATH2
      • V1
        • Dockerfile

我收集它为$(DOCKER_TARGES)---> build-path1-v1 build-path1-v2 build-path2-v2

现在我的目标

build-%: build/$(subst -,/,%))/Dockerfile $(shell find build -type f)

我尝试替换%中的字符串,但它无法正常工作。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您可以使用secondary expansion

执行此操作
.SECONDEXPANSION:
build-%: build/$$(subst -,/,%) $$(shell find build -type f)

请注意双$$符号 - 因为这些符号将在最终扩展中扩展为美元符号。您也可以使用定义来执行此操作,但我讨厌这样做,因为它可能导致看不见的膨胀:

define MKRULE 
   build-$1: build/$$(subst -,/,$1) $$(shell find build -type f)
endef

foreach(f,$(TARGS),$(eval $(call MKRULE $f)))