Mein Makefile schlägt mit Fehler fehl:
Makefile:34: *** multiple target patterns. Stop.
Was bedeutet es wirklich, wie kann ich das beheben?
( GNU make manual , geschrieben von Captain Obvious, hilft nicht).
Fand es. Ich hatte Regel in Form:
$(FOO): bar
Dabei FOO
wurde der Shell-Befehl festgelegt, der ihn mit einer Fehlermeldung verschmutzte, die einen Doppelpunkt enthielt.
Antworten:
Ich hatte es auf dem Makefile
Es liegt am
:
im Dateinamen. Ich habe das mit gelöstquelle
C:/Qt/5.8/mingw53_32/bin/rcc.exe
) in einer der Makefile-Regeln. Entfernen Sie diese automatisch generierten Makefiles, wenn Sie auf einem Linux-Computer bauenmake clean
gefolgt vonmake
behoben. Die falsche Zeile war_build/nrf52840_xxaa/app_mpu.c.o: ../../../app_mpu.c \
Abgesehen davon, dass ich Doppelpunkten wie in der ursprünglichen Antwort entkommen muss, habe ich festgestellt, dass Sie möglicherweise das gleiche Problem bekommen, wenn die Einrückung deaktiviert ist. In einem Makefile musste ich Leerzeichen durch einen Tabulator ersetzen, und so konnte ich den Fehler überwinden.
quelle
Ich möchte nur hinzufügen, wenn Sie diesen Fehler erhalten, weil Sie Cygwin make und automatisch generierte Dateien verwenden, können Sie ihn mit dem folgenden sed beheben:
sed -e 's@\\\([^ ]\)@/\1@g' -e 's@[cC]:@/cygdrive/c@' -i filename.d
Möglicherweise müssen Sie bei der ersten Ersetzung mehr Zeichen als nur Leerzeichen zur Escape-Liste hinzufügen, aber Sie haben die Idee. Das Konzept hier ist, dass / cygdrive / c ein Alias für c ist: dass Cygwins Marke erkennt.
Und kann genauso gut einwerfen
-e 's@^ \+@\t@'
Nur für den Fall, dass Sie versehentlich mit Leerzeichen begonnen haben (obwohl ich / denke / dies normalerweise ein "fehlender Trennzeichen" -Fehler ist).
quelle
Ich bin auf den gleichen Fehler gestoßen. Nach dem Kämpfen stellte ich fest, dass es an "Leerzeichen" im Ordnernamen lag.
Zum Beispiel :
Früher Mein Ordnername war: "Qt Projects"
Später habe ich es geändert in: "QtProjects"
und mein Problem wurde behoben.
Es ist sehr einfach, aber manchmal ein großes Problem.
quelle
Ich hatte dieses Problem (Doppelpunkte im Zielnamen), weil ich
-n
in meinerGREP_OPTIONS
Umgebungsvariablen hatte. Anscheinend hat dies dazu geführtconfigure
, dass dasMakefile
falsch generiert wurde .quelle
Meine IDE hat eine Mischung aus Leerzeichen und Tabulatoren in meinem Makefile hinterlassen.
Wenn ich mein Makefile so einstelle, dass nur Registerkarten verwendet werden, wurde dieser Fehler für mich behoben.
quelle
Ich habe auch diesen Fehler erhalten (innerhalb des Eclipse-basierten STM32CubeIDE unter Windows).
Nach einem Doppelklick auf den Fehler "Mehrere Zielmuster" wurde ein Pfad zu einer
.ld
Datei angezeigt. Es stellt sich heraus, dass es sich um ein weiteres Problem mit "illegalen Charakteren" handelt. Das beleidigende Zeichen war das (warte darauf): =Heuristik der Woche: Verwenden Sie nur [a..z] in Ihren Pfaden, da es zwangsläufig andere illegale Zeichen gibt </ vomit>.
Das GNU make-Handbuch dokumentiert dies nicht explizit.
quelle