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


  • Mod

    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 primzahl

    Komisch, oder?

    L. G.
    Steffo


  • Mod

    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


  • Mod

    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 normalen make 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


Anmelden zum Antworten