В make-файле есть утверждение:
include $(PROJECT_CUSTOM_DIR)/project_custom.mak
В некоторых случаях этот файл не существует. В этих случаях мы получаем сообщение об ошибке «нет такого файла или каталога». Однако оказывается, что неявное правило (или что-то еще) добавляет расширение .c
, которое затем соответствует одному из наших стандартных правил компиляции .c
в .o
файлов, и пытается его скомпилировать.
Наше правило по умолчанию для .c
файлов выглядит следующим образом:
PROJECT_CUSTOM_DIR := .
include $(PROJECT_CUSTOM_DIR)/project_custom.mak
C_EXT ?= c
CXX_EXT ?= cpp
OBJ_EXT ?= o
%.$(OBJ_EXT) : $(C_SRCS)
$(COMPILE_C_COMMAND)
Ошибка из журнала здесь:
Makefile:10: project_custom.mak: No such file or directory
gcc -c -fvisibility=hidden -O3 -flto -mtune=generic project_custom.mak.c -o project_custom.mak.o
Я много читал, пытаясь определить, что здесь происходит, и я в тупике. Кто-нибудь может объяснить это поведение?
Кроме того, мне известно, что добавление тире, например -include file.mak
, устраняет ошибку, связанную с тем, что файл не найден. Кроме того, отключение неявных правил здесь не вариант.
Спасибо!