$(CC) $(LD_FLAGS) $@.o -o $@ $LIBS
# wrong ^^^^^
неправильно.Makefile
переменные требуют круглых скобок: $(LIBS)
и ваш $LIBS
понимается как $(L)IBS
, а у вас нет никакой переменной L
(поэтому $LIBS
расширяется до IBS
, поскольку $L
расширяется до нуля)
Кстати, вы могли бы использовать make --trace
или римейк с -x
, чтобы найти эту ошибку
Что касается отредактированного вопроса, я полагаю, что вы можете ошибаться вНаличие такого сложного дерева исходных текстов для такой маленькой программы (вообще говоря, небольшие программы длиной менее нескольких десятков тысяч строк проще обрабатывать в плоском дереве исходных текстов, то есть в одном каталоге, содержащем как *.c
, так и *.h
источникфайлы).Тем не менее, вы можете рассмотреть
INC_DIRS = $(wildcard */include)