Хорошо, я застрял на этом, и я понятия не имею, что я делаю неправильно. Все шло отлично, работая над более сложным make-файлом, но вдруг я получил ошибку «Отсутствует разделитель». Я смог изолировать его до очень простого сценария:
define push_dir
$(info ${1})
endef
define pop_dir
$(info ${1})
endef
define include_submake
$(call push_dir,${1})
$(call pop_dir,${1})
endef
include test.mk
INITIAL_SUBMAKE:= includeme.mk
$(call include_submake,${INITIAL_SUBMAKE})
process:
@echo Processed...
И вывод:
C:\project>make -f Simple process
includeme.mk
includeme.mk
Simple:4: *** missing separator. Stop.
includeme.mk
на самом деле не существует. Я понятия не имею, что здесь происходит не так, я пробовал множество вещей. Если я окружу вызов include_submake информацией примерно так:
$(info $(call include_submake,${INITIAL_SUBMAKE}))
Ошибка отсутствия разделителя исчезает. Также, если в определении include_submake
я вызываю только одну из функций, она работает нормально. Кроме того, если я вызываю функции напрямую, а не include_submake
, это также работает:
include test.mk
INITIAL_SUBMAKE:= includeme.mk
$(call push_dir,${INITIAL_SUBMAKE})
$(call pop_dir,${INITIAL_SUBMAKE})
process:
@echo Processed...
C:\project>make -f Simple process
includeme.mk
includeme.mk
Processed...
Мне кажется, что я упускаю здесь что-то фундаментальное. Спасибо за вашу помощь.