Вместо исполняемого кода все, что он делает, это создает файлы, которые ничего не делают, даже если файлы сделаны исполняемыми.
TARGETS = load list show add delete btree
all: $(TARGETS)
%: %.cpp
g++ $< -g -o $@ -MM -MF $@.dd
sed "s/$@\.o:/$@:/" $@.dd > $@.d
-@rm $@.dd
DEPS=$(TARGETS:%=%.d)
-include $(DEPS)