05.11.2013 Aufrufe

Skript Programmierung C/C++

Skript Programmierung C/C++

Skript Programmierung C/C++

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Kapitel 15 – Programmerzeugung mit „make“<br />

15.1 Funktions-Templates<br />

Zweck:<br />

- automatische Prüfung von Abhängigkeiten von Programmquellen<br />

- Steuerung der Übersetzungs- und Bindungsvorgänge, der Bibliotheken-Erzeugung, der<br />

Installation von Paketen, der Verzeichnisbereinigung<br />

Beispiel: makefile<br />

#einfacher makefile zu 15.1<br />

qtest 1.0 :„qtest.cc queue_contained.tv g++ -g –Wall –c qtest1.cc –o qtest1.o"<br />

#ausführbare Datei<br />

qtest1: qtest1.o g++ -g –o qtest1.e qtest1.o<br />

wobei der große Abstand durch einen Tabulator erreicht wird und –g für den Debugger steht.<br />

–o wird für objectfiles verwendet. Alle Warnungen sind angeschaltet<br />

#Hilfsdateien löschen<br />

clean: rm –f *.o *.e *.bak<br />

Aufbau einer make-Regel:<br />

Ziel: Abhängigkeiten Abhängigkeiten<br />

Kommando<br />

wobei der Abstand wieder ein Tabulator ist<br />

Aufruf der Kommandozeile:<br />

...> make //nur make tippen<br />

...> make –f makefile<br />

15.1.1 Makros<br />

Zweck:<br />

- Verbesserung / Verkürzung der Schreibweise<br />

- sicherer (jede Inform. nur einmal)<br />

Makrodefinition:<br />

Name = Zeichenkette<br />

Verwendung:<br />

$(Name) oder ${Name}<br />

Beispiel: makefile mit Makros<br />

CC = g++ #Compiler-Name<br />

CFLAGS = –c –g –Wall<br />

LDFLAGS = –g<br />

LIBS = –lm –lg++<br />

qtest1.o:<br />

qtest1.e:<br />

clean:<br />

qtest1.cc queue container.h<br />

$(CC) $(CFLAGS) qtest1.cc qtest1.o<br />

qtest1.o queue container.h<br />

$(CC) $(LDFLAGS) –o $@ qtest1.o $(LIBS)<br />

rm –f *.o *.e *.bak *.bak~<br />

mögliche Aufrufe:<br />

nur Übersetzung von qtest1.cc<br />

make qtest1.o<br />

61

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!