[[!meta title="More make idoms"]] [[!meta date="2008-08-31 20:27:09"]] I'm rather proud of this one (can you tell I'm overhauling sawsim's Makefile ;). $ cat Makefile FILES = a b DS = src DT = targ all : $(FILES:%=$(DT)/%) @echo "got $^" @echo "done" clean : rm -rf $(DT) .SECONDEXPANSION: #$(FILES:%=$(DT)/%) : $$($$@:$(DT)/%=$(DS)/%) $(DT) # This colon --^ produces: "target pattern contains no `%'." # Instead use this idom --v $(FILES:%=$(DT)/%) : $$(subst $(DT),$(DS),$$@) $(DT) @echo "looking for $< for $@" $(DT) : mkdir $@ % : @echo "missing rule for $@" $ make looking for src/a for targ/a looking for src/b for targ/b got targ/a targ/b done Of course you could accomplish the same effect with $(DT)/% : $(SRC)/% @echo "looking for $< for %@" but what fun is that? ;) [[!tag tags/programming]]