TABs против пробелов - это (в данном случае) красная сельдь.В вашем сообщении об ошибке указана проблема:
src/test1.c:3: *** missing separator,Stop.
Хм ... make жалуется на строку 3 файла src/test1.c
... почему парсинг кода C выполняется make!?!?
И вот почему: у вас есть замена в обратном направлении:
OBJECTS = $(SOURCE:.o=.c)
DEBS = $(SOURCE:.d=.c)
Первая строка заменяет все пути xxx.o
на xxx.c
.Это полная противоположность того, что вы хотите: вы хотите заменить все пути xxx.c
на xxx.o
.То же самое для файлов .d
.
Поскольку подстановок не происходит, неизмененные файлы остаются, поэтому значение переменной DEBS
равно src/test1.c
и т. Д., Затем вы пытаетесь include
, что какmakefile.
Исправьте свои назначения:
OBJECTS = $(SOURCE:.c=.o)
DEBS = $(SOURCE:.c=.d)
Подсказка:
Здесь гораздо эффективнее использовать простое назначение:
SOURCE := $(wildcard src/*.c)
OBJECTS := $(SOURCE:.c=.o)
DEBS := $(SOURCE:.c=.d)