目标通常不会生成

时间:2014-02-07 13:39:14

标签: makefile gnu-make

我的一个项目需要一个通用的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

1 个答案:

答案 0 :(得分:0)

要调试eval的使用,有一个诀窍:您可以将eval替换为info,以查看在获得规则时将会评估的内容。

但是,您的问题与此问题相同:How to use multiple-line variable

您正在阅读GNU make 4.0的文档(或者至少是一个比您正在使用的版本更新的版本)。你需要阅读你正在使用的GNU版本的文档(2006年发布了3.81)。