好吧,我坚持这一点,我不知道我做错了什么。在更复杂的 makefile 上工作一切顺利,但突然之间我得到了“缺少分隔符”错误。我能够将其隔离为一个非常简单的场景:
测试.mk
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
实际上并不存在。我不知道这里出了什么问题我尝试了很多东西。如果我在 info 中围绕对 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...
我觉得我在这里忽略了一些基本的东西。谢谢你的帮助。