#lang racket-makefile ;; Ordinary Racket can generate targets and dependency lists. (define sources '("foo.c" "bar.c" "baz.c")) (define objects (for/list ([src sources]) (define obj (path-replace-extension src #".o")) (target obj (deps src) (run `(cc -c $< -o $target))) obj)) (default-target all) (phony all clean) (target all (deps objects)) (target clean (apply rm-f objects))