Это не будет делать то, что вы хотите:
$(EXECUTABLE): $(OBJDIR)/$(addsuffix .o, $(SOURCES))
Как это расширить? Посмотрите на «первый уровень» расширения:
engine: obj/$(addsuffix .o, foo bar biz baz)
Тогда, если вы расширите остаток пути, вы получите:
engine: obj/foo.o bar.o biz.o baz.o
Простое прикрепление строки ($(OBJDIR)/
) до раскрытия списка вещей не применяет эту строку ко всем элементам списка! Он только добавляет его к элементу first в списке.
Вы хотите что-то вроде этого:
# Use := here, not =, so you don't run this shell command lots of times!
SOURCES := $(shell find $(SRCDIR) -name '*.$(EXTENSION)' -print)
OBJECTS := $(patsubst %.$(EXTENSION),$(OBJDIR)/%.o,$(notdir $(SOURCES)))
$(EXECUTABLE): $(OBJECTS)