Projekt compiliert nicht immer



  • Hallo,

    ich beobachte jetzt schon mehrfach, dass Änderungen im .c-file nicht compiliert werden. So erhalte ich beispielsweise eine Fehlermeldung, dass eine Variable mehrfach deklariert sei, obwohl sie bereits an allen stellen auskommentiert war.
    Derartiges Verhalten kann eigentlich nur am Makefile liegen. Meins sieht so aus:

    CFLAGS=-g -std=c99 -D_XOPEN_SOURCE=700 `pkg-config gtk+-3.0 --cflags`
    CC=gcc
    
    .PHONY: clean all
    
    all: regeln.o schach.o gui.o
    	$(CC) $(CPPFLAGS) $(CFLAGS) $^ -o schach `pkg-config gtk+-3.0 --libs`
    
    .c.o: $(CC) $(CPPFLAGS) $(CFLAGS) -c $< `pkg-config gtk+-3.0 --libs`
    
    clean:
    	rm -f *.o schach
    

    Passt das so? Oder gibt es eine andere Erklärung für meine Beobachtungen?

    Vielen Dank :).



  • In Zeile 6 solltest Du all durch das Target schach ersetzen, ansonsten wird immer wieder gelinkt:

    schach: regeln.o schach.o gui.o
            $(CC) $(CPPFLAGS) $(CFLAGS) $^ -o $@ `pkg-config gtk+-3.0 --libs`
    

    In Zeile 11 gehört der Befehl in die nächste Zeile, die Zeile des Targets ist für Abhängigkeiten vorgesehen. Ausserdem kannst Du Dir pkg-config gtk+-3.0 --libs sparen:

    .c.o:
            $(CC) $(CPPFLAGS) $(CFLAGS) -c $<
    

    Eventuelle Änderungen in Headerdateien werden nicht erkannt, da keine Abhängigkeiten deklariert wurden. Ansonsten sollte es so funktionieren.

    - osdt



  • Eventuelle Änderungen in Headerdateien werden nicht erkannt, da keine Abhängigkeiten deklariert wurden.

    Genau das war das Problem. Danke für die Hilfestellung!


Anmelden zum Antworten