好的,我卡在这里了,我不知道我做错了什么。在处理一个更复杂的makefile时一切都很顺利,但突然间我遇到了“缺少分隔符”的错误。我能够将它简化为一个非常简单的场景:
test.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...
我觉得我在这里忽略了某些基本的东西。感谢您的帮助。