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? ;)