PROGRAMS=$(wildcard data/*.cpp) OUTPUT=$(PROGRAMS:%=%.output) TARGETS=variable if loop function all: data/index $(OUTPUT) data/index: $(PROGRAMS) cd data; \ for target in $(TARGETS); do \ (echo "$$target: "`ls -m $${target}_*.cpp`) >> index; \ done data/%.output: data/%.bin ./$< > $@ data/%.cpp.bin: data/%.cpp g++ $< -o $@ clean: rm data/*.bin data/*.output data/index #main.oef: header.oef programs/guess-output/*.cpp footer.oef Makefile # cd programs/guess-output; make all.oef # cat header.oef programs/guess-output/all.oef footer.oef > main.oef