web-dev-qa-db-fra.com

"plusieurs modèles de cibles" Erreur de Makefile

Mon makefile échoue avec une erreur:

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

Qu'est-ce que cela signifie vraiment, comment puis-je résoudre ce problème? 

( GNU make manual , écrit par Captain évident, n'aide pas).


Je l'ai trouvé J'ai eu la règle en forme:

$(FOO): bar

FOO a été défini à partir de la commande Shell qui l'a polluée avec un message d'erreur contenant deux points.

64
Kornel

Je l'avais sur le Makefile

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

C'est à cause du : dans le nom du fichier . J'ai résolu ceci avec

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

En plus d'avoir à échapper aux deux points comme dans la réponse initiale, j'ai découvert que si l'indentation était éteinte, vous pourriez potentiellement rencontrer le même problème. Dans un makefile, je devais remplacer les espaces par une tabulation, ce qui me permettait de dépasser l'erreur.

10
demongolem

Je veux juste ajouter que si vous obtenez cette erreur parce que vous utilisez des fichiers générés automatiquement par make et .__ de Cygwin, vous pouvez y remédier avec le fichier sed suivant:

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

Vous devrez peut-être ajouter plus de caractères que la simple espace à la liste d'échappement dans la substitution First, mais vous en avez une idée. Le concept ici est que/cygdrive/c estun alias pour c: que la marque de cygwin reconnaîtra.

Et aussi bien jeter

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

juste au cas où vous commenciez par des espaces sur un accident (bien que je/pense/ceci sera généralement une erreur de "séparateur manquant").

4
Sean McClain

J'ai rencontré la même erreur. Après avoir lutté, j'ai découvert que c'était dû à "Espace" dans le nom du dossier.

Par exemple :

Auparavant, mon nom de dossier était: "Projets Qt"  

Plus tard je l'ai changé en: "QtProjects"

et mon problème était résolu.

C'est très simple mais parfois un problème majeur.

2
skg

J'ai eu ce problème (deux points dans le nom de la cible) car j'avais -n dans ma variable d'environnement GREP_OPTIONS. Apparemment, configure a été généré de manière incorrecte par Makefile.

0
Trebor Rude