To jest mój makefile:
all:ll
ll:ll.c
gcc -c -Wall -Werror -02 c.c ll.c -o ll $@ $<
clean :
\rm -fr ll
Kiedy próbuję make clean
lubmake make
pojawia się ten błąd:
:makefile:4: *** missing separator. Stop.
Jak mogę to naprawić?
Odpowiedzi:
makefile ma bardzo głupie relacje z tabulatorami, wszystkie akcje każdej reguły są identyfikowane przez tabulatory. I nie, 4 spacje nie tworzą tabulacji, tylko tabulacja tworzy tabulator.
do sprawdzenia używam polecenia
cat -e -t -v makefile_name
Pokazuje obecność tabulatorów z
^I
zakończeniami linii z$
obydwoma, które są niezbędne, aby upewnić się, że zależności kończą się poprawnie, a tabulatory zaznaczają akcję reguł, dzięki czemu można je łatwo zidentyfikować w narzędziu make.Przykład:
źródło
makefile
z samouczka i nie zadziałało. Dopiero po usunięciu spacji i wstawieniuTab
działało!-v
opcjacat
polecenia jest tutaj zbędna, ponieważ-e
środki-vE
i-t
środki-vT
.W VS Code po prostu kliknij „Space: 4” w prawym rogu i zmień go na tab podczas edycji pliku Makefile.
źródło
Zawsze powinieneś pisać polecenie po Tabspacji, a nie spacji.
Dotyczy to
gcc
linii (linia 4) w twoim przypadku. Musisz wcześniej wstawić kartęgcc
.Wymienić również
\rm -fr ll
zrm -fr ll
. Wstaw tabulatory również przed tym poleceniem.źródło
Rozwiązaniem
PyCharm
byłoby zainstalowanieMakefile support
wtyczki:Preferences
(cmd + ,
)Plugins
->Marketplace
Makefile support
, zainstaluj i uruchom ponownie IDE.To powinno rozwiązać problem i zapewnić składnię dla makefile.
źródło
To dość stare pytanie, ale wciąż chciałbym powiedzieć o jeszcze jednej opcji za pomocą
vi/vim
edytora do wizualizacji kart. Jeśli maszvi/vim
zainstalowany, otwórzMakefile
(np.vim Makefile
) I wprowadź:set list
. Spowoduje to wyświetlenie liczby zakładek wstawionych jak poniżej,źródło
Za pomocą
.editorconfig
do automatycznej naprawy zakładek:źródło
Kluczowym punktem było „HARD TAB” 1. Sprawdź, czy użyłeś TAB zamiast białych znaków 2. Sprawdź .vimrc dla „set tabstop = X”
źródło
Jeśli ktoś z was używa produktu firmy Intellij, rozwiązaniem tego jest:
Other File Types
.Use tab character
i bądź ostrożny,Tab size
aIndent
wartości muszą wynosić 4.źródło
Jeśli używasz mcedit do edycji makefile. musisz zobaczyć następujący znak.
źródło
Wynika to z faktu, że tabulator jest zastępowany spacjami. Aby wyłączyć tę funkcję, przejdź do
gedit-> edycja-> preferencje-> edytor
i usuń czek na
„ zamień tabulator spacją ”
źródło