我的一个项目需要一个通用的Makefile,但我似乎无法在Makefile中找到define
。
至少减少了,我所拥有的是:
TARGETS = target1 target2
define TARGET_template =
$(1):
@echo "Hi there, I'm $(1)!"
endef
.PHONY: all
all: $(TARGETS)
$(foreach TARGET, $(TARGETS), $(eval $(call TARGET_template, $(TARGET))))
如果我执行make all
,我希望控制台输出为:
Hi there, I'm target1!
Hi there, I'm target2!
但我得到了
make: *** No rule to make target `target1', needed by `all'. Stop.
我做错了什么?我正在使用GNU make 3.81
答案 0 :(得分:0)
要调试eval
的使用,有一个诀窍:您可以将eval
替换为info
,以查看在获得规则时将会评估的内容。
但是,您的问题与此问题相同:How to use multiple-line variable
您正在阅读GNU make 4.0的文档(或者至少是一个比您正在使用的版本更新的版本)。你需要阅读你正在使用的GNU版本的文档(2006年发布了3.81)。