«Plusieurs modèles de cible» Erreur de fichier 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?

(Le manuel GNU make , écrit par Captain Obvious, n’aide pas).


Trouvé J’avais la règle sous la forme:

 $(FOO): bar 

FOO été défini à partir de la commande shell qui l’a pollué avec un message d’erreur contenant un deux-points.

Je l’avais sur le Makefile

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

C’est à cause de : dans le nom du fichier. J’ai résolu cela avec

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

En plus d’avoir à échapper les deux points comme dans la réponse d’origine, j’ai trouvé que si l’indentation est désactivée, vous pourriez avoir le même problème. Dans un fichier makefile, j’ai dû remplacer des espaces par un onglet et cela m’a permis de dépasser l’erreur.

Je veux juste append, si vous obtenez cette erreur parce que vous utilisez la fabrication de Cygwin et les fichiers générés automatiquement, vous pouvez le réparer avec le sed suivant,

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

Vous devrez peut-être append plus de caractères que de l’espace dans la liste d’échappement dans la première substitution, mais vous aurez l’idée. Le concept ici est que / cygdrive / c est un alias pour c: le make de cygwin le reconnaîtra.

Et peut aussi bien jeter

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

juste au cas où vous avez commencé avec des espaces en cas d’accident (bien que je pense / cela / cela sera généralement une erreur “séparateur manquant”).

J’ai rencontré la même erreur. Après avoir lutté, j’ai trouvé que c’était dû à “Space” dans le nom du dossier.

Par exemple :

Plus tôt Mon nom de dossier était: “Projets Qt”

Plus tard, je l’ai changé pour: “QtProjects”

et mon problème a été résolu.

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

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, cela provoquait une configure incorrecte du Makefile .