我有一个Makefile部分,具有以下结构:
bob:
ifdef DEBUG
@echo running
endif
@echo chug chug chug
ifdef DEBUG
@echo done
endif
bobit:
@echo "before"
@make bob
@echo "after"
在这里,我做了大量简化,所有的echo其实都是非平凡的命令块,并且有更多的条件语句,但这捕捉了我的问题的本质。
由于技术原因,我现在不想涉及到子制造,但因为echo代表大量非平凡的代码,我不想只是将bob的主体复制并粘贴到子制造的位置。
理想情况下,我想做的是像这样的:
define BOB_BODY
ifdef DEBUG
@echo running
endif
@echo chug chug chug
ifdef DEBUG
@echo done
endif
endef
bob:
$(BOB_BODY)
bobit:
@echo "before"
$(BOB_BODY)
@echo "after"
很不幸,条件语句似乎给我带来了麻烦,它们产生了“ifdef:未找到命令”错误,我尝试使用eval和call的各种组合来解决此问题,但似乎无法找到解决方法。
我该如何让它工作?这是解决问题的正确方法吗?