【发布时间】:2016-12-14 13:46:02
【问题描述】:
这是一个玩具 Makefile。 我想创建文件“a”、“b”、“c”以及“a.out”、“b.out”、“c.out”。
LIST=a b c
all: $(addsuffix .out,$(LIST))
define FUN
in := $(1)
out := $(1).out
$$(in) :
echo $(1) > $$(in)
$$(out) : $$(in)
echo $$(in) > $$(out)
endef
$(foreach p,$(LIST),\
$(eval $(call FUN,$(p))))
当我使用“make -n”测试运行它时,版本 GNU Make 4.1, 实际执行的命令是:
echo a > c
echo c > c.out
echo b > c
echo c > c.out
echo c > c
echo c > c.out
但是,预期的结果是:
echo a > a
echo a > a.out
echo b > b
echo b > b.out
echo c > c
echo c > c.out
有人可以帮助解释 Makefile 的行为或如何修复此脚本吗?谢谢。
【问题讨论】:
标签: makefile