Как заменить строку в "%" в файле make - PullRequest
0 голосов
/ 23 мая 2018

У меня есть следующая папка с Dockerfile

  • build
    • 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 голосов
/ 23 мая 2018

Вы можете сделать это с помощью вторичного расширения :

.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)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...