Wie im Online-Handbuch angegeben , besteht die häufigste Ursache für diesen Fehler darin, dass Zeilen mit Leerzeichen eingerückt werden, wenn makeTabulatorzeichen erwartet werden.
Richtig
target:
\tcmd
wo \tist TAB (U + 0009)
Falsch
target:
....cmd
wobei jedes .ein Leerzeichen darstellt (U + 0020).
Für mich bestand das Problem darin, dass ich einige Zeilenende- # ...Kommentare in eine define ... endefmehrzeilige Variablendefinition eingebettet hatte . Durch das Entfernen der Kommentare wurde das Problem behoben.
Danke dir. Ich wusste nicht, dass Kommentare in der defineRichtlinie wörtlich behandelt werden. Eigentlich wird das Verhalten in der Dokumentation nicht erklärt . (Aus Gründen der Klarheit: Das Einbetten eines Zahlenzeichens in die Direktive selbst ist kein Syntaxfehler. Es wird jedoch nicht als Beginn eines Kommentars interpretiert, daher ist dies zugegebenermaßen fehleranfällig.)#
ynn
3
Mein Fehler war in einer Variablendeklarationszeile mit einer mehrzeiligen Erweiterung. Ich habe ein nachgestelltes Leerzeichen nach dem "\", was dies zu einer ungültigen Zeilenfortsetzung machte.
MY_VAR = \
val1 \ <-- 0x20 there caused the error.
val2
In meinem Fall wurde der gleiche Fehler verursacht, weil :am Ende der Doppelpunkt fehlte wie in staging.deploy:. Beachten Sie also, dass es leicht zu Syntaxfehlern kommen kann.
Ich hatte die fehlende Trenndatei in Makefiles von qmake generiert. Ich habe Qt-Code auf eine andere Plattform portiert. Ich hatte weder QMAKESPEC noch MAKE eingestellt. Hier ist der Link, auf den ich die Antwort gefunden habe:
Alles, was ich anscheinend brauchte, war das "Build-Essential" -Paket, um dann zuerst zu laufen autoconf, was das machte Makefile.pre.in, dann das, was ./configuredann makeperfekt funktioniert ...
Antworten:
Wie im Online-Handbuch angegeben , besteht die häufigste Ursache für diesen Fehler darin, dass Zeilen mit Leerzeichen eingerückt werden, wenn
make
Tabulatorzeichen erwartet werden.Richtig
wo
\t
ist TAB (U + 0009)Falsch
wobei jedes
.
ein Leerzeichen darstellt (U + 0020).quelle
Nur zum Grinsen und für den Fall, dass jemand anderes auf einen ähnlichen Fehler stößt:
Ich habe den berüchtigten Fehler "fehlendes Trennzeichen" erhalten, weil ich eine Regel aufgerufen hatte, die eine Funktion als definiert
eher, als
dh
($
eher als$(
.quelle
0x20
"Platz", ist das richtig?$
Dies ist ein Syntaxfehler in Ihrem Makefile. Es ist ziemlich schwierig, genauer zu sein, ohne die Datei selbst oder relevante Teile davon zu sehen.
quelle
Für mich bestand das Problem darin, dass ich einige Zeilenende-
# ...
Kommentare in einedefine ... endef
mehrzeilige Variablendefinition eingebettet hatte . Durch das Entfernen der Kommentare wurde das Problem behoben.quelle
define
Richtlinie wörtlich behandelt werden. Eigentlich wird das Verhalten in der Dokumentation nicht erklärt . (Aus Gründen der Klarheit: Das Einbetten eines Zahlenzeichens in die Direktive selbst ist kein Syntaxfehler. Es wird jedoch nicht als Beginn eines Kommentars interpretiert, daher ist dies zugegebenermaßen fehleranfällig.)#
Mein Fehler war in einer Variablendeklarationszeile mit einer mehrzeiligen Erweiterung. Ich habe ein nachgestelltes Leerzeichen nach dem "\", was dies zu einer ungültigen Zeilenfortsetzung machte.
quelle
In meinem Fall Fehler als nächstes verursacht. Ich habe versucht, Befehle global auszuführen, dh außerhalb eines Ziels.
UPD. Um einen Befehl global ausführen zu können, muss er ordnungsgemäß gebildet sein. Zum Beispiel Befehl
würde werden:
quelle
In meinem Fall wurde der gleiche Fehler verursacht, weil
:
am Ende der Doppelpunkt fehlte wie instaging.deploy:
. Beachten Sie also, dass es leicht zu Syntaxfehlern kommen kann.quelle
In meinem Fall fehlte mir tatsächlich eine Registerkarte dazwischen
ifeq
und der Befehl in der nächsten Zeile. Anfangs gab es keine Leerzeichen.Gewesen sein sollte:
Beachten Sie, dass dies
<tab>
ein tatsächliches Tabulatorzeichen istquelle
In meinem Fall wurde dieser Fehler durch das Fehlen eines Platzes verursacht. Ich hatte diesen if-Block in meinem Makefile:
was hätte sein sollen:
mit einem Leerzeichen nach if.
quelle
Ich hatte die fehlende Trenndatei in Makefiles von qmake generiert. Ich habe Qt-Code auf eine andere Plattform portiert. Ich hatte weder QMAKESPEC noch MAKE eingestellt. Hier ist der Link, auf den ich die Antwort gefunden habe:
https://forum.qt.io/topic/3783/missing-separator-error-in-makefile/5
quelle
Alles, was ich anscheinend brauchte, war das "Build-Essential" -Paket, um dann zuerst zu laufen
autoconf
, was das machteMakefile.pre.in
, dann das, was./configure
dannmake
perfekt funktioniert ...quelle
Der folgende Makefile-Code hat funktioniert:
quelle