Makefile löscht Objektdateien nicht
-
Hi,
habe folgendes aus einem C-Buch übernommen:# # Makefile TARGET = primzahl OBJECTS = primz_haupt.o primz_math.o HEADERS = primz_math.h LIBS = -lm $(TARGET): $(OBJECTS) gcc $^ $(LIBS) -o $@ primz_%.o: primz_%.c $(HEADERS) gcc -c $< -o $@ clean: rm -f $(OBJECTS)
Leider werden die erzeugten Objektdateien nicht gelöscht (Clean-Bereich). Hat jemand eine Ahnung weshalb? Benutze Linux.
L. G.
Steffo
-
Das Rezept (hier rm ...) muss in der nächsten Zeile (und mit Tab davor) stehen, so wie du es jetzt da stehen hast, wird es als Teil der Zutatenliste angesehen.
P.S.: Darf ich fragen, welches Buch?
-
Habe das von dem Buch "C und Linux" von Martin Gräfe abgetippt und zur Verteidigung des Autors muss ich sagen, dass ich es im Clean-Fall falsch abgetippt habe (bzw. die Auswirkungen der minimalen Änderung meinerseits nicht kannte).
Dennoch: Ich habe alle meine Source-Dateien kurz verändert und neu abgespeichert und auch die Objektdateien vorher manuell gelöscht. Sie werden nach dem make trotzdem nicht gelöscht.
Hier der Output:
make
gcc -c primz_haupt.c -o primz_haupt.o
gcc -c primz_math.c -o primz_math.o
gcc primz_haupt.o primz_math.o -lm -o primzahlKomisch, oder?
L. G.
Steffo
-
Steffo schrieb:
Komisch, oder?
Nein, das ist eigentlich exakt, was ich von dem obigen Makefile nach Korrektur erwarte. Und eigentlich von jedem Makefile, welches sich an die üblichen Konventionen hält. Was hättest du denn erwartet?
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
SeppJ schrieb:
Nein, das ist eigentlich exakt, was ich von dem obigen Makefile nach Korrektur erwarte. Und eigentlich von jedem Makefile, welches sich an die üblichen Konventionen hält. Was hättest du denn erwartet?
Naja, es werden wie gesagt die Objektdateien nicht gelöscht, was ich wiederum erwartet habe.
L. G.
Steffo
-
Du hast aber doch make und nicht make clean gemacht.
-
Sie werden bei
make clean
gelöscht und nur dann. Das steht so in dem Makefile und es ist auch üblich so. Wenn sie beim normalenmake
gelöscht werden würden, dann wär ja jedes make gleichbedeutend einem kompletten Rebuild, und man könnte es sich eigentlich sparen, make zu benutzen.
-
Hmm, das wird aber in meinem Buch nicht erwähnt, dass man das so aufrufen muss.
Daher danke für die Info!L. G.
Steffo