Концепция называется шаблон правил . Вы можете прочитать об этом в GNU make manual .
$(GRAPHDIR)/%.png: $(GRAPHDIR)/%.dot
dot $< -Tpng -o $@
graphs: $(patsubst %,$(GRAPHDIR)/%.png, Complex Simple IFileReader McCabe)\
или просто
%.png: %.dot
dot $< -Tpng -o $@
graphs: $(patsubst %,$(GRAPHDIR)/%.png, Complex Simple IFileReader McCabe)
Продвинутый материал: забавно заметить, что там повторение ...
PNG_pattern=$(GRAPHDIR)/%.png
$(PNG_pattern): $(GRAPHDIR)/%.dot
dot $< -Tpng -o $@
graphs: $(patsubst %,$(PNG_pattern), Complex Simple IFileReader McCabe)