default: all all: exe clean: rm -f foo.obj bar.obj sdk-objects/baz.obj main.obj exe %.obj: $(filter %.src,$<) @mkdir -p "$(dir $@)" @echo "Compile $< to $@" cat $< > $@ exe: main.obj foo.obj bar.obj sdk-objects/baz.obj @echo link $^ to $@ cat $^ > $@ main.obj: main.src foo.obj: subdir/foo.src bar.obj: subdir/bar.src sdk-objects/baz.obj: /tmp/baz.src