“多个目标模式”生成文件错误
我的生成文件失败,错误:
Makefile:34: *** multiple target patterns. Stop.
这是什么意思,我该如何解决这个问题?
( GNU make手册 ,由Obvious上尉编写,没有帮助)。
find了。 我有规则的forms:
$(FOO): bar
其中FOO
是从shell命令设置的,该命令污染了包含冒号的错误消息。
我把它放在Makefile上
MAPS+=reverse/db.901:550:2001.ip6.arpa lastserial: ${MAPS} ./updateser ${MAPS}
这是因为:
在文件名中。 我解决了这个问题
- - - - 注意 / / VV MAPS = +反向/ db.901 \:550 \:2001.ip6.arpa lastserial:$ {MAPS} ./updateser $ {MAPS}
除了原来的答案逃离冒号,我发现如果缩进是closures的,你可能会得到同样的问题。 在一个makefile中,我不得不用一个制表符replace空格,并且允许我通过错误。
我只是想补充,如果你得到这个错误是因为你正在使用Cygwin make和自动生成的文件,你可以用下面的sed修复它,
sed -e 's@\\\([^ ]\)@/\1@g' -e 's@[cC]:@/cygdrive/c@' -i filename.d
您可能需要添加更多的字符,而不仅仅是空格到第一个replace中的转义列表,但您明白了。 这里的概念是/ cygdrive / c是c的别名:cygwin的make会识别的。
而且还可以扔进去
-e 's@^ \+@\t@'
以防万一你意外地开始了空格(尽pipe我认为这通常是一个“缺失的分隔符”错误)。
我遇到了同样的错误。 挣扎后,我发现这是由于文件夹名称中的“空格”。
例如 :
较早的我的文件夹名称是: “Qt项目”
后来我把它改成: “QtProjects”
我的问题解决了。
它非常简单,但有时是一个重大问题。
我有这个问题(冒号在目标名称),因为我有我的GREP_OPTIONS
环境variables-n
。 显然,这会导致configure
错误地生成Makefile
。