Programmierpraktikum NPDGL I

Makefile Referenz

Referenz zum Nachschlagen
Zusammengehörigkeiten von Makefile Referenz:

Links

Ausführliche Dokumentation des Programms make


[make_main_parts]

Hauptbestandteile eines Makefiles sind
  1. Variablen, die mit
    CXX=g++
    CFLAGS=-I./include
    LOCAL_LIBS=-L./lib -lmygrid
    PROGS = gridtest test_projection test_spaceoperator test_euler
    
    definiert werden, und mit der Syntax $(CFLAGS) ausgewertet werden. Ähnlich wie in der Bash!
  2. Regeln (Rules), die die Syntax
     Ziel: Liste_der_Abhaengigkeiten
            Befehle
    
    erfüllen müssen. Die Befehle werden immer genau dann ausgeführt, wenn die Erstellung des Ziel's angefordert wurde, und eine Datei aus der Liste_der_Abhaengigkeiten seit dem letzten Aufruf verändert wurde.


[make_example_rule]

Einfaches Beispiel für ein Makefile-Rule zum Erstellen des Programms gridtest

Als einfachstes Beispiel schauen wir uns die Regel zur Erstellung des Programms gridtest an:

gridtest: gridtest.o
        $(CXX) -o $@ $< $(CFLAGS) $(LOCAL_LIBS)


[make_new_target]

Erweitern des Makefiles zum Erstellen des neuen Programms test_projection
Wir wollen das Programm test_projection aus der Source Datei test_projection.cc mit dem Befehl make all oder dem Befehl make test_projection automatisch erstellen lassen. Als Grundlage nehmen wir die Regel für das Programm gridtest:
gridtest: gridtest.o
        $(CXX) -o $@ $< $(CFLAGS) $(LOCAL_LIBS)
Wir kopieren diese beiden Zeilen und ändern sie in
test_projection: test_projection.o
        $(CXX) -o $@ $< $(CFLAGS) $(LOCAL_LIBS)

Anschließend fügen wir noch der Variablen PROGS den neuen Programmnamen hinzu, so dass der Test auch bei einem Aufruf von make all gebaut wird, und all erstellten Dateien durch einen Aufruf von make clean gelöscht werden.