"多个目标模式"Makefile错误

Kor*_*nel 71 makefile

我的makefile因错误而失败:

Makefile:34: *** multiple target patterns.  Stop.
Run Code Online (Sandbox Code Playgroud)

它究竟意味着什么,我该如何解决这个问题呢?

(GNU制作手册,由Captain Obvious编写,没有帮助).


找到了.我有形式的规则:

$(FOO): bar
Run Code Online (Sandbox Code Playgroud)

FOO从shell命令设置的地方,用包含冒号的错误消息污染了它.

mcr*_*mcr 54

我在Makefile上有它

MAPS+=reverse/db.901:550:2001.ip6.arpa 
lastserial:  ${MAPS}
    ./updateser ${MAPS}
Run Code Online (Sandbox Code Playgroud)

这是因为:文件名中的.我解决了这个问题

                      -------- notice
                     /    /
                    v    v
MAPS+=reverse/db.901\:550\:2001.ip6.arpa
lastserial:  ${MAPS}
    ./updateser ${MAPS}

  • @PirFahimShah答案是说明文件名(db.901:550:2001.ip6.arpa)中的冒号需要转义.mcr通过在他们面前放一个反斜杠来逃避冒号.这样,make不会将冒号解释为特殊符号. (4认同)

dem*_*lem 13

除了必须像原始答案一样逃避冒号,我发现如果缩进是关闭的,你可能会遇到同样的问题.在一个makefile中,我不得不用选项卡替换空格,这让我可以通过错误.