Makefile中的变量替换产生意外结果

问题描述 投票:0回答:1

我有一个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,但事实并非如此。

为什么?

makefile
1个回答
0
投票

因为make会可靠地粘贴您提供的所有内容。根据FOO=one two...中行的不可见其余部分,即是否有空格,您正在生成one twoone twoone two one two。我认为后者是非法的,但会产生类似target given more than once in same line的警告。

© www.soinside.com 2019 - 2024. All rights reserved.