Если у вас есть только файлы *.cpp
в ваших каталогах, тогда еще нет никаких *.o
, поэтому ваш $(wildcard *.o)
расширится до нуля.
То, что вы хотите - это получить *.cpp
файлов и вычислите соответствующие *.o
файлы:
OBJECTS=$(patsubst %.cpp,%.o,$(SOURCES))
или эквивалентно:
OBJECTS=$(SOURCES:.cpp=.o)
Теперь ваша команда компилятора не самая лучшая, потому что если вы дотронетесь до любого источникафайл все будет скомпилирован.Вместо этого вы можете использовать:
$(OBJECTS): %.o: %.cpp
$(CC) -c -g $(CFLAGS) $< -o $@
, чтобы на самом деле перестраивались только файлы, к которым вы прикасались.
Также у вас неверная команда компоновки.Это должно быть:
$(TARGET) : $(OBJECTS)
$(CC) $(LIBS) -o $(TARGET) $(OBJECTS)
, поскольку аргументом опции -o
является файл output , то есть цель.