|
Programmierpraktikum NPDGL I
|
|
Ausführliche Dokumentation des Programms make
CXX=g++ CFLAGS=-I./include LOCAL_LIBS=-L./lib -lmygrid PROGS = gridtest test_projection test_spaceoperator test_euler
$(CFLAGS) ausgewertet werden. Ähnlich wie in der Bash! Ziel: Liste_der_Abhaengigkeiten
Befehle
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.
Als einfachstes Beispiel schauen wir uns die Regel zur Erstellung des Programms gridtest an:
gridtest: gridtest.o
$(CXX) -o $@ $< $(CFLAGS) $(LOCAL_LIBS)
Ziel (Target) ist hier ist der Name des Programms, Abhängigkeitsliste (Dependencies ) besteht hier aus einer einzigen Abhängigkeit, der Objektdatei gridtest.o. Befehl (Command) wird zu g++ -o gridtest gridtest.o -I./include -L./lib -lmygrid ausgewertet. Man beachte hierbei die speziellen Variablen $@ und $<, welche durch das Ziel bzw. die Abhängigkeitsliste ersetzt werden. Die Verwendung solcher Variablen erlaubt die Definition sogenannter Pattern Rules der Form %.o: %.cc
test_projection 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)
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.
1.7.3