pages = $(wildcard *.html) sheets = $(wildcard *.css) targets = $(foreach f,$(pages) $(sheets),public/$(f)) .PHONY: all clean site all: site site: $(targets) public: mkdir $@ $(targets): public/%: % | public cp $< $@ clean: rm -r public