Denken Sie daran, dass Sie für jedes neue Kapitel eine Kopie des vorherigen Kapitels erstellen. Für dieses Kapitel sollten Sie also eine Kopie Ihres Ordners cgm_01 erstellen und ihn cgm_02 nennen. Alles was jetzt folgt spielt sich in diesem neuen Ordner ab.

Zuerst legen Sie ein paar neue Dateien an:

  • cgmath.h
  • settings.h
  • window.cpp
  • graphics.cpp

Für den Moment können diese Dateien leer bleiben. Wir werden Sie in den nachfolgenden Teilaufgaben dieses Kapitels mit Inhalt füllen.

Translation Units in C++

Genau wie unter C spricht man auch unter C++ von sog. Translation Units. Diese “Übersetzungseinheiten” sind die Summer aller Dateien die man einem Compiler gibt um eine Objektdatei zu erstellen. Das beinhaltet jeweils eine .c Datei sowie alle eingebundenen (#include) .h und .cpp Dateien. Aktuell hat unser Programm genau eine Translation Unit: main.o

Mit den zwei neuen Dateien window.cpp und graphics.cpp führen wir zwei neue Translation Units ein, die uns dabei helfen unseren Code zu strukturieren und voneinander zu isolieren.

Neue Makefile Targets einfügen

Diese beiden Translation Units müssen auch als neue Regeln in das Makefile hinzugefügt werden. Außerdem müssen wir die beiden daraus resultierenden .o Files als Abhängigkeit für die Hauptregel hinzufügen:

bin/engine: obj/main.o obj/graphics.o obj/window.o bin
	g++ -g obj/*.o -o bin/engine $(LIB) $(LNK) $(OPT)

obj/main.o: main.cpp obj
	g++ -g -c main.cpp -o obj/main.o $(INC) $(OPT)

obj/graphics.o: graphics.cpp obj
	g++ -g -c graphics.cpp -o obj/graphics.o $(INC) $(OPT)

obj/window.o: window.cpp obj
	g++ -g -c window.cpp -o obj/window.o $(INC) $(OPT)

Wenn wir zukünftig weitere Translation Units zu unserem Projekt hinzufügen, dann wissen Sie nun, wie Sie diese im Makefile einbinden.

Führen Sie make clean und make aus um zu schauen ob alles ohne Probleme funktioniert.