Единственный способ, которым я могу представить, что вы получаете эту ошибку - это если в вашем make-файле есть цикл include
То есть, либо make-файл включает сам себя, либо make-файл A
имеет include B
, а make-файл B
имеет include A
.
Вы не показываете содержимое Makefile.posix
, но если оно включает Makefile.common
у вас может быть последняя проблема.
В вашем примере на этом примере есть другая альтернатива, которая выглядит неправильно:
TEMPLATE_PATH := $(SDK_ROOT)/components/toolchain/gcc/Makefile.common
include $(TEMPLATE_PATH)
тогда вы говорите в Makefile.common
у вас есть:
include $(TEMPLATE_PATH)Makefile.posix
Это неправильно, поскольку TEMPLATE_PATH
это не каталог, это файл;это расширилось бы до:
include /sdk/root/components/toolchain/gcc/Makefile.commonMakefile.posix
, что явно неверно.
Но учтите следующее: что, если у вас есть конечный пробел в TEMPLATE_PATH, поэтому это выглядит так:
TEMPLATE_PATH := $(SDK_ROOT)/components/toolchain/gcc/Makefile.common #<-space here
Обратите внимание, вам не нужен комментарий;make всегда сохраняет конечные пробелы, даже если в конце строки больше ничего нет.Затем, включение в Makefile.common
расширится до этого:
include /sdk/root/components/toolchain/gcc/Makefile.common Makefile.posix
, в котором есть make-файл, включающий сам себя, рекурсивно.В конце концов у вас закончатся открытые файлы.