Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Eigenes makefile

  1. #1
    Jaipur
    Gast

    Question Eigenes makefile

    Hi,

    ich habe 4 C Quellcode Dateien + main.c:
    main.c baum.c queue.c stack.c

    und 3 Headerdateien:
    baum.h stack.h queue.h

    Die Datei stack.c inkludiert stack.h und baum.h
    Die Datei queue.c inkludiert queue.h und baum.h
    Die Datei baum.c inkludiert baum.h queue.h stack.h

    Mein makefile:
    Code:
    baum: main.o baum.o queue.o stack.o
    	gcc -o baum main.o baum.o queue.o stack.o
    
    main.o: main.c
    	gcc -c main.c
    
    baum.o: baum.c
    	gcc -c baum.c
    
    queue.o: queue.c
    	gcc -c queue.c
    
    stack.o: stack.c
    	gcc -c stack.c
    Meine Frage:
    Gehören die Headerdateien auch in das makefile? Wenn ja wohin?
    Ist mein makefile eigentlich korrekt? Zumindest funktioniert es

  2. #2
    Moderator Avatar von geronet
    Registriert seit
    23.05.2001
    Ort
    Grainau
    Beiträge
    96
    Wenn es funktioniert dann ist es doch super..

    Du kannst ja noch so was reinschrifteln:

    gcc -c main.c -o main.o


    Es fehlt halt noch "make install" usw.. aber ist nicht so wichtig

    Grüsse, Stefan

  3. #3
    Registrierter Benutzer
    Registriert seit
    19.10.1999
    Ort
    Dresden
    Beiträge
    255
    Headerdateien gehören ins Makefile, da die C-Dateien von diesen abhängen. Anbei findest Du ein Gerüst, wie ein Makefile aufgebaut sein kann, damit Abhängigkeiten automatisch mittels 'make depend' aufgelöst werden können. Befinden sich alle C-Dateien Deines Projekts in einem Verzeichnis, so sollte die Aufruffolge von:

    make depend
    make

    Deine Anwendung sauber basteln. 'make depend' ist nachfolgend nur erneut auszuführen, wenn eine neue Datei zum Projekt hinzugefügt wurde.

    Der Code:
    Code:
    CC = /usr/bin/gcc 
    CCFLAGS = 
    SOURCE = $(wildcard *.c) 
    OBJECTS = $(SOURCE:%.c=%.o) 
    RM = rm -f  
    
    baum: $(OBJECTS)  
    	$(CC) -o baum $(OBJECTS)  
    
    %.o: %.c Makefile  
     	$(CC) $(CCFLAGS) $< -o $@   
    
    depend:  
     	makedepend -- $(CCFLAGS) -- $(SOURCE)  
    
    clean:  
     	@$(RM) -f $(OBJECTS)
    Den Nutzen der Verwendung von Variablen muss ich wohl nicht erläutern;-)

    Gruß, Thomas

  4. #4
    Registrierter Benutzer Avatar von TheDodger
    Registriert seit
    17.05.2001
    Ort
    Hamburg
    Beiträge
    615
    Alternativ kann man auch tmake einsetzen ... allerdings weiß ich jetzt nicht, wie das da mit den Abhängigkeiten geregelt wird ...
    Die Makefiles, die qmake bastelt (qmake basiert auf tmake) laufen jedenfalls sauber.
    Bodo
    Systemadmistration UNIX

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •