Dla mnie problem polegał na tym, że miałem # ...komentarze na końcu wiersza osadzone w define ... endefdefinicji zmiennej wieloliniowej. Usunięcie komentarzy sprawiło, że problem zniknął.
Dziękuję Ci. Nie wiedziałem, że komentarze w definedyrektywie są traktowane dosłownie. W rzeczywistości zachowanie nie zostało wyjaśnione w dokumentacji . (Dla jasności: Osadzanie znak numeru #. W ramach dyrektywy sama nie jest błąd składni Ale to nie jest po prostu interpretować jako początek komentarza, więc robi to wprawdzie podatne na błędy.)
ynn
3
Mój błąd dotyczył zmiennej linii deklaracji z rozszerzeniem wieloliniowym. Mam spację po znaku „\”, co spowodowało, że niepoprawna kontynuacja linii.
MY_VAR = \
val1 \ <-- 0x20 there caused the error.
val2
W moim przypadku ten sam błąd został spowodowany, ponieważ :na końcu brakowało okrężnicy jak w staging.deploy:. Pamiętaj, że może to być łatwy błąd w składni.
Miałem brakujący plik separatora w Makefiles wygenerowany przez qmake. Przenosiłem kod Qt na inną platformę. Nie miałem zestawu QMAKESPEC ani MAKE. Oto link, na który znalazłem odpowiedź:
Najwyraźniej wszystko, czego potrzebowałem, to pakiet „niezbędny do kompilacji”, a następnie autoconfnajpierw uruchomić , który stworzył Makefile.pre.in, a ./configurepotem ten, makektóry działa idealnie ...
Odpowiedzi:
Jak wskazano w podręczniku online , najczęstszą przyczyną tego błędu jest wcięcie wierszy spacjami, gdy
make
oczekiwane są znaki tabulacji.Poprawny
gdzie
\t
jest TAB (U + 0009)Źle
gdzie każdy
.
reprezentuje SPACJĘ (U + 0020).źródło
Tylko dla uśmiechu i na wypadek, gdyby ktoś popełnił podobny błąd:
Dostałem niesławny błąd „brakującego separatora”, ponieważ wywołałem regułę definiującą funkcję jako
zamiast
tzn.
($
raczej niż$(
.źródło
0x20
„spacji”, prawda?$
To jest błąd składniowy w twoim Makefile. Trudno jest być bardziej szczegółowym, nie widząc samego pliku ani jego odpowiedniej części.
źródło
Dla mnie problem polegał na tym, że miałem
# ...
komentarze na końcu wiersza osadzone wdefine ... endef
definicji zmiennej wieloliniowej. Usunięcie komentarzy sprawiło, że problem zniknął.źródło
define
dyrektywie są traktowane dosłownie. W rzeczywistości zachowanie nie zostało wyjaśnione w dokumentacji . (Dla jasności: Osadzanie znak numeru#
. W ramach dyrektywy sama nie jest błąd składni Ale to nie jest po prostu interpretować jako początek komentarza, więc robi to wprawdzie podatne na błędy.)Mój błąd dotyczył zmiennej linii deklaracji z rozszerzeniem wieloliniowym. Mam spację po znaku „\”, co spowodowało, że niepoprawna kontynuacja linii.
źródło
W moim przypadku błąd spowodował następny. Próbowałem wykonywać polecenia globalnie, tzn. Poza jakimkolwiek celem.
UPD. Aby uruchomić komendę globalnie, trzeba być odpowiednio uformowanym. Na przykład polecenie
stanie się:
źródło
W moim przypadku ten sam błąd został spowodowany, ponieważ
:
na końcu brakowało okrężnicy jak wstaging.deploy:
. Pamiętaj, że może to być łatwy błąd w składni.źródło
W moim przypadku faktycznie brakowało mi tabulatora pomiędzy
ifeq
i polecenia w następnym wierszu. Na początku nie było spacji.Powinien był być:
Uwaga:
<tab>
to rzeczywisty znak tabulacjiźródło
W moim przypadku ten błąd był spowodowany brakiem jedynie spacji. Miałem to, jeśli blok w moim makefile:
który powinien być:
ze spacją po if.
źródło
Miałem brakujący plik separatora w Makefiles wygenerowany przez qmake. Przenosiłem kod Qt na inną platformę. Nie miałem zestawu QMAKESPEC ani MAKE. Oto link, na który znalazłem odpowiedź:
https://forum.qt.io/topic/3783/missing-separator-error-in-makefile/5
źródło
Najwyraźniej wszystko, czego potrzebowałem, to pakiet „niezbędny do kompilacji”, a następnie
autoconf
najpierw uruchomić , który stworzyłMakefile.pre.in
, a./configure
potem ten,make
który działa idealnie ...źródło
Działa następujący kod Makefile:
źródło