我有一个Makefile:
FOO=one two
$(FOO):
echo $@
现在我跑步:
make one
并获得echo one
make two
并获得echo two
make three
并出现错误
这是预期的。
但是,当我将Makefile更改为:
FOO=one two
$(FOO)$(FOO):
echo $@
还是一样!
我希望我必须键入make oneone
,但事实并非如此。
为什么?
因为make
会可靠地粘贴您提供的所有内容。根据FOO=one two...
中行的不可见其余部分,即是否有空格,您正在生成one twoone two
或one two one two
。我认为后者是非法的,但会产生类似target given more than once in same line
的警告。