On Wed, 2021-03-03 at 17:31 +0100, Goran V. wrote: > $(BUILD)/$(FRONTEND)/%.html \ > $(BUILD)/$(FRONTEND)/%.js \ > $(BUILD)/$(FRONTEND)/%.css \ > $(BUILD)/$(FRONTEND)/%.svg \ > $(BUILD)/$(FRONTEND)/%.ico: > @echo -n "$(FRONTEND) - building $@" > @$(MD) $(BUILD)/$(FRONTEND) > @cp $(FRONTEND)/$(@F) $@ > @echo " ...done"
I think you're misunderstanding what a pattern rule with multiple targets means to GNU make. See: https://www.gnu.org/software/make/manual/html_node/Pattern-Intro.html (last paragraph). It means that one invocation of the recipe will create ALL the targets. That's why make believes it's already considered all the other targets that are listed as patterns here, even though it only ran the recipe one time. Note this is the opposite of what an explicit rule with multiple targets means: that defines multiple unique rules, one for each target.