web-dev-qa-db-ja.com

「複数のターゲットパターン」Makefileエラー

私のメイクファイルはエラーで失敗します:

Makefile:34: *** multiple target patterns.  Stop.

それは本当にどういう意味ですか、どうすれば修正できますか?

GNU make manual 、Captain Obviousによって書かれているが、役に立たない)。


それを見つけた。フォームにルールがありました:

$(FOO): bar

FOOは、コロンを含むエラーメッセージで汚染されたシェルコマンドから設定されました。

69
Kornel

Makefileにありました

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

それは、:ファイル名。私はこれを解決しました

 --------注意
//
 vv 
 MAPS + = reverse/db.901 \:550 \:2001.ip6.arpa 
 lastserial:$ {MAPS} 
 ./updateser $ {MAPS} 
53
mcr

元の答えのようにコロンをエスケープする必要があることに加えて、インデントがオフの場合、同じ問題が発生する可能性があります。あるメイクファイルでは、スペースをタブに置き換える必要があったため、エラーを回避できました。

11
demongolem

Cygwinのmakeファイルと自動生成されたファイルを使用しているためにこのエラーが発生した場合は、次のsedで修正できます。

sed -e 's@\\\([^ ]\)@/\1@g' -e 's@[cC]:@/cygdrive/c@' -i filename.d

最初の置換でエスケープリストにスペース以外の文字を追加する必要があるかもしれませんが、アイデアは得られます。ここでの概念は、/ cygdrive/cがcのエイリアスであるということです:cygwinのmakeはそれを認識します。

そして同様にスローすることがあります

-e 's@^ \+@\t@'

偶然にスペースで始めた場合に備えて(ただし、これは通常、「区切り文字の欠落」エラーになりますが)。

4
Sean McClain

同じエラーが発生しました。苦労した後、フォルダ名の「スペース」が原因であることがわかりました。

例えば ​​:

以前の私のフォルダ名は:"Qt Projects"

後で私はそれを次のように変更しました:"QtProjects"

私の問題は解決しました。

その非常に単純ですが、時には大きな問題です。

3
skg

この問題(ターゲット名にコロン)があったのは、-n私のGREP_OPTIONS環境変数。どうやら、これによりconfigureMakefileを誤って生成しました。

0
Trebor Rude