“多个目标模式”生成文件错误

我的生成文件失败,错误:

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