Вы можете сделать это с помощью вторичного расширения :
.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)))