2013-01-01 3 views
68

Mögliche Duplizieren:
Make error: missing separatorMakefile - fehlt Separator

diesen Code in Make-Datei haben:

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

clean: 
rm $(PROG) 

und den Fehler

missing separator. stop. 

Kann mir jemand helfen?

+3

Einrückung ist nicht optional in Makefiles. Haben Sie genau das, was Sie gepostet haben, oder ist das Leerzeichen fehlgeschlagen? – Mat

+0

Ich habe es wie ich schrieb. – user1827257

+5

Diese Frage sollte erneut geöffnet werden. Die Antwort hier zeigt auch, wie man ein Makefile ohne Tabs schreibt, um das Problem vollständig zu umgehen. – Jens

Antwort

193

Sie müssen den Zeilen beginnend mit gcc und rm mit einer harten Registerkarte vorangehen. Befehle in make-Regeln müssen mit einer Registerkarte beginnen (es sei denn, sie folgen einem Semikolon in derselben Zeile). Das Ergebnis sollte wie folgt aussehen:

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

clean: 
     rm $(PROG) 

Beachten Sie, dass einige Redakteure eine Abfolge von Räumen konfiguriert werden kann, anstelle einer Fest Registerkarte einzufügen. Wenn am Anfang dieser Zeilen Leerzeichen stehen, wird auch der Fehler "fehlende Trennzeichen" angezeigt. Wenn Sie Probleme haben, harte Registerkarten einzufügen, verwenden Sie den Semikolonweg:

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

clean: ; rm $(PROG) 
+0

Danke, jetzt funktioniert es :) – user1827257

+2

Ein upvote (klicken Sie auf den Pfeil nach oben) wäre willkommen :-) – Jens

+9

danke für die Semikolon Weg – cluv