2013-01-01 11 views
68

Powiel możliwe:
Make error: missing separatorMakefile - brakuje separator

ten kod w makefile:

PROG = semsearch 
all: $(PROG) 
%: %.c 
gcc -o [email protected] $< -lpthread 

clean: 
rm $(PROG) 

i błąd

missing separator. stop. 

Czy ktoś może mi pomóc?

+3

Wcięcie nie jest opcjonalne w plikach Makefile. Czy to, co masz dokładnie tak, jak to opublikowałeś lub czy spacja została zmazana? – Mat

+0

Mam to, jak napisałem. – user1827257

+5

To pytanie powinno zostać ponownie otwarte. Odpowiedź tutaj pokazuje również, jak napisać plik Makefile bez kart, całkowicie omijając problem. – Jens

Odpowiedz

193

Linie poprzedzające gcc i rm należy poprzedzać twardą zakładką. Polecenia w regułach tworzenia są wymagane, aby rozpocząć od tabulatora (chyba że podążają średnikiem w tej samej linii). Wynik powinien wyglądać następująco:

PROG = semsearch 
all: $(PROG) 
%: %.c 
     gcc -o [email protected] $< -lpthread 

clean: 
     rm $(PROG) 

pamiętać, że niektóre redaktorzy mogą być skonfigurowane tak, aby wstawić sekwencję przestrzeni zamiast karcie twardym. Jeśli na początku tych linii znajdują się spacje, zobaczysz także błąd "brakującego separatora". Jeśli masz problemy z wstawianiem twardych zakładek, użyj średnika:

PROG = semsearch 
all: $(PROG) 
%: %.c ; gcc -o [email protected] $< -lpthread 

clean: ; rm $(PROG) 
+0

Dziękuję, teraz to działa :) – user1827257

+2

Zostanie doceniona upvote (kliknij strzałkę w górę) :-) – Jens

+9

dzięki za średnik – cluv