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 ^Izakoń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:
Kaizen~/so_test $ cat -e -t -v mk.t
all:ll$ ## here the $ is end of line ...
$
ll:ll.c $
^Igcc-c -Wall-Werror-02 c.c ll.c -o ll $@ $<$
## the ^I above means a tab was there before the action part, so this line is ok .
$
clean :$
\rm -fr ll$
## see here there is no ^I which means , tab is not present .... ## in this case you need to open the file again and edit/ensure a tab ## starts the action part
„cat -e -t -v nazwa_pliku_ Makefile” jest najlepszą rzeczą. Zawsze. Wciąż wpatrywałem się w ekran, widząc coś, co wyglądało jak tabulator, kompletnie brakuje mi, że to JEDNA LINIA w całym pliku, która używała spacji zamiast twardego tabulatora.
Dziękuję bardzo! Kompilowałem kod źródłowy dużego projektu. Wkleiłem kilka wierszy makefilez samouczka i nie zadziałało. Dopiero po usunięciu spacji i wstawieniu Tabdziałało!
Podczas kopiowania / wklejania z jednego makefile do innego za pomocą edytora vi (lub vim) pamiętaj, aby przypadkowo nie pobrać linii ~ (tylda) wskazującej koniec pliku. Prawdziwe ~ wygląda jak znacznik vi i spowoduje „*** brakujący separator. Stop.” błąd. Może się to wydawać oczywiste, ale gdy zdarzy się to przypadkowo, nie jest to oczywiste. Zobacz moje komentarze na blogu, aby uzyskać więcej informacji.
VS Code rozpoznał, że mój plik „common.mk”, wyodrębniony z nieprefiksowego „Makefile” był plikiem make i podświetlił go poprawnie - ale po cichu zaczął wcięcia ze spacjami zamiast tabulatorów.
To dość stare pytanie, ale wciąż chciałbym powiedzieć o jeszcze jednej opcji za pomocą vi/vimedytora do wizualizacji kart. Jeśli masz vi/vimzainstalowany, otwórz Makefile(np. vim Makefile) I wprowadź :set list. Spowoduje to wyświetlenie liczby zakładek wstawionych jak poniżej,
%-linux: force$
^I@if ["$(GCC_VERSION)"="2.96"]; then \$
^I^Iecho=====Generating build tree for legacy $@ architecture =====; \$
^I^I$(CONFIGURE) $(CWD) $@ legacy; \$
^Ielse \$
^I^Iecho=====Generating build tree for $@ architecture =====; \$
^I^I$(CONFIGURE) $(CWD) $@; \$
^Ifi$^Icd build-$@;make$
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.