Fehlendes Trennzeichen in Makefile?

9

Das folgende Makefile funktioniert nicht und ich bin mir nicht sicher, was passiert.

%Vor%

Demo hat die Hauptfunktion und lib eine Reihe von Methoden, die in der Demo verwendet werden.

Ich habe das -c Flag zu lib hinzugefügt. Wenn ich aber make mache, bekomme ich:

%Vor%     
Kobi 06.03.2012, 08:59
quelle

4 Antworten

31

In Anbetracht Ihrer Aktualisierung mit dem Fehler überprüfen Sie, was Sie in der Zeile vor diesen ${CC} -Befehlen haben. Viele make -Programme erfordern ein echtes Tab-Zeichen, bevor die Befehle und Editoren, die zum Beispiel acht Leerzeichen einfügen, sie brechen. Das ist oft der Grund für die "Fehlende Separator" -Fehler.

Das können Sie mit dem folgenden Transkript sehen. In der Datei befinden sich vier Leerzeichen vor dem $(xyzzy) :

%Vor%

Also, wenn ich es mache, bekomme ich den gleichen Fehler wie du:

%Vor%

Aber wenn ich es bearbeite und diese vier Leerzeichen in einen Tab umwandle, funktioniert es gut:

%Vor%

Sie haben auch ein Problem damit, wie Sie die Quelldateien kombinieren möchten.

Ohne ein -c -Flag auf gcc wird versucht, eine separate ausführbare Datei von jeder dieser Befehle zu erstellen, was mit ziemlicher Sicherheit zu Linker-Fehlern führt. Du wirst so etwas wie (einfach) brauchen:

%Vor%

oder (etwas komplexer):

%Vor%

Das Problem mit der ersten Lösung ist, dass es beide Programme unnötig kompiliert, selbst wenn nur eines veraltet ist. Die zweite Lösung ist ein wenig intelligenter.

    
paxdiablo 06.03.2012, 09:04
quelle
5

Vermisst du zufällig einen "Tab" ( \t ) vor ${CC} ?

Oft wird mein Editor Tabs durch Leerzeichen ersetzen und ich würde diese Nachricht erhalten.

%Vor%     
Gui13 06.03.2012 09:15
quelle
1

lib muss als Bibliothek und nicht als Programm kompiliert werden.

Versuchen Sie, es zu ändern:

%Vor%     
Rusty 06.03.2012 09:02
quelle
0

Seit main hängt von lib ab:

%Vor%

und

%Vor%     
Karoly Horvath 06.03.2012 09:05
quelle

Tags und Links