我的makefile失败,错误如下:
Makefile:34: *** multiple target patterns. Stop.
这到底是什么意思,我该如何解决这个问题?
(GNU make manual,由显而易见的船长写的,没有帮助)。
找到了。我有形式上的规则:
$(FOO): bar
其中FOO
是从外壳命令设置的,该命令用包含冒号的错误消息污染了它。
发布于 2013-02-16 01:51:14
除了必须像在原始答案中那样转义冒号之外,我还发现如果缩进关闭,可能会遇到同样的问题。在一个makefile中,我必须用制表符替换空格,这让我可以跳过这个错误。
发布于 2013-09-25 01:28:16
我只想补充一下,如果你因为使用Cygwin make和自动生成的文件而得到这个错误,你可以用下面的sed来修复它。
sed -e 's@\\\([^ ]\)@/\1@g' -e 's@[cC]:@/cygdrive/c@' -i filename.d
在第一个替换中,您可能需要向转义列表中添加更多字符,而不仅仅是空格,但是您已经明白了这一点。这里的概念是/cygdrive/c是c的别名:cygwin的make可以识别。
也可以把它扔进去
-e 's@^ \+@\t@'
以防你意外地从空格开始(尽管我/我认为/这通常是一个“缺少分隔符”的错误)。
发布于 2020-09-07 21:47:53
我的IDE在Makefile中留下了空格和制表符的混合。
将Makefile设置为仅使用选项卡修复了此错误。
https://stackoverflow.com/questions/2100448
复制相似问题