Sie sind auf Seite 1von 281

Eclipse fr C/C++-Programmierer

ExkIusiv Iizensiert fr Studierende der HSR RapperswiI


fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
Sebastian Bauer arbeitet als wissenschaftlicher Mitarbeiter am Klinikum Charit in Ber-
lin. Erste Gehversuche mit Eclipse unternahm er whrend eines Praktikums bei IBM, das
er im Rahmen seines Informatikstudiums durchfhrte. Seitdem ist ihm Eclipse bei der
Softwareentwicklung ein stndiger Begleiter, den er nicht nur im Beruf einzusetzen
wei. In seiner Freizeit betreut er verschiedene Open-Source-Projekte fr Amiga-
Betriebssysteme. Zudem ist er seit 1999 Mitentwickler aktueller Versionen des Amiga-
Betriebssystems. Als Autor verffentlichte er Artikel ber Eclipse und CDT im Amiga
Magazin und im Eclipse Magazin.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
Sebastian Bauer
Eclipse fr
C/C++-Programmierer
Handbuch zu den
Eclipse C/C++ Development Tools (CDT)
2., aktualisierte und erweiterte Auflage
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
Sebastian Bauer
mail@sebastianbauer.info
Lektorat: Ren Schnfeldt
Copy-Editing: Denise Schmidt, Berlin
Satz: Science & More, www.science-and-more.de
Herstellung: Nadine Thiele
Umschlaggestaltung: Helmut Kraus, www.exclam.de
Druck und Bindung: Media-Print Informationstechnologie, Paderborn
Bibliografische Information der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie;
detaillierte bibliografische Daten sind im Internet ber http://dnb.d-nb.de abrufbar.
ISBN 978-3-89864-715-1
2., aktualisierte und erweiterte Auflage 2011
Copyright 2011 dpunkt.verlag GmbH
Ringstrae 19
69115 Heidelberg
Die vorliegende Publikation ist urheberrechtlich geschtzt. Alle Rechte vorbehalten. Die Verwendung
der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags
urheberrechtswidrig und daher strafbar. Dies gilt insbesondere fr die Vervielfltigung, bersetzung
oder die Verwendung in elektronischen Systemen.
Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie
Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-,
marken- oder patentrechtlichem Schutz unterliegen.
Alle Angaben und Programme in diesem Buch wurden mit grter Sorgfalt kontrolliert. Weder Autor
noch Verlag knnen jedoch fr Schden haftbar gemacht werden, die in Zusammenhang mit der
Verwendung dieses Buches stehen.
5 4 3 2 1 0
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
Fr G.
vii
Vorwort
ber Eclipse
Der Ursprung von Eclipse liegt in VisualAge, IBMs Produktlinie von VisualAge
integrierten Entwicklungsumgebungen fr eine Vielzahl verschiedener
Programmiersprachen, darunter C/C++, Fortran, Java und Smalltalk.
Anfnglich waren diese Programme in der Sprache Smalltalk geschrie-
ben, die sich Mitte der 90er Jahre groer Beliebtheit erfreute. Durch das
aufkeimende frei beziehbare Java verblasste die Popularitt von Small-
talk jedoch recht schnell. So erblickte im Jahre 1999 VisualAge Micro
Edition (VAME) das Licht der Welt, das als erstes Produkt der Reihe
komplett auf Java aufsetzte. VAME selbst zielte auf Java-fhige einge-
bettete Systeme ab.
Fr seine Oberche nutzte VAME ein eigenes Toolkit, das Stan- 1999: VAME
dard Widget Toolkit (SWT), was fr Java-Applikationen sehr unge-
whnlich war, aber den Vorteil hatte, das native Feeling des Betriebssys-
tems zu wahren. Ein inker inkrementeller Java-Compiler wurde hinzu-
gefgt und machte es mglich, dass Projekte zu jedem Zeitpunkt auch
in bersetzter Form vorlagen. Unter der Haube war die IDE sehr exi-
bel, so konnte sie durch Plugins erweitert werden. Der richtige Erfolg
wollte sich jedoch noch nicht einstellen.
Die Erfahrungen, die die Entwickler in der VisualAge-Reihe sam- 2001: Eclipse
melten, und das Framework von VAME ossen zusammen und mn-
deten schlielich in einem neuen Produkt, das IBM unter dem Namen
Eclipse im November 2001 in die ffentlichkeit trug. Die Ankndi-
gung sorgte fr viel Furore, denn im Gegensatz zu VisualAge wurden
die Quellen offen gelegt. IBM brstete sich mit einer Wohltat an die
Open-Source-Gemeinde: Der Wert der Quellen betrge 40 Millionen
US-Dollar. Der Name war zynisch gewhlt, denn Eclipse (zu Deutsch:
Finsternis) stand in direkter Konkurrenz zu NetBeans, das ein Jahr zu-
vor durch Java-Mutter Sun (zu Deutsch: Sonne) als Open Source zur
Welt gebracht wurde und ebenfalls als IDE fr Java um die Gunst der
Entwickler buhlte.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
viii Vorwort
Eclipse lie sich jedoch nicht auf eine Java-IDE reduzieren. Das Eine Plattform fr alles
und nichts im
Besonderen
aus VAME vererbte, jedoch verbesserte Plugin-Konzept ebnete den Weg
einer universellen Entwicklungsplattform. The Eclipse Platform is an
IDE for anything, and for nothing in particular, hie es zeitweilig auf
http://www.eclipse.org.
Zeitgleich zur ersten Verffentlichung wurde das Eclipse-Kon- Das Eclipse-Konsortium
sortium eclipse.org von den Firmen Borland, IBM, MERANT, QNX
Software Systems, Rational Software, Red Hat, SuSE, TogetherSoft und
Webgain gegrndet. Fortan fasste dieses Konsortium die Entwicklung
der Plattform unter einem Dach zusammen. Es schrieb sich auf die Fah-
ne, alle beigesteuerten Produkte und deren Quellen unter die von der
Open Source Initiative [14] akzeptierte Common Public License (CPL)
zu stellen. Zahlreiche andere Hersteller schlossen sich mit der Zeit dem
Konsortium an. Die Mitglieder verpichteten sich neben der Leistung
von Beitrgen auch zur Bereitstellung von Mitarbeitern.
Auf der ersten, von da an jhrlich stattndenden Eclipse-Konfer- 2004: Eclipse wird
gemeinntzig. enz Anfang 2004 [6] wurde bekannt gegeben, dass das Konsortium zu
einer unabhngigen Non-Prot-Organisation, der Eclipse-Foundation,
umorganisiert werden sollte. Man stellte die bis dato initiierten Projekte
unter die Eclipse Public License (EPL), und die ohnehin schon groe
Gemeinde bekam weitere neue Mitglieder. Inzwischen zhlt sie knapp
180 Untersttzer (Stand Januar 2009). Selbst Microsoft kndigte jngst
eine Zusammenarbeit mit der Eclipse-Foundation an.
Die Verffentlichung von Eclipse ndet zusammen mit weiteren Ab 2006: Gleichzeitige
Verffentlichung von
Eclipse-Projekten
Projekten seit dem Jahr 2006 synchronisiert statt. Die Zyklen trugen
zunchst den Namen von Jupitermonden: Callisto (2006, 10 Projekte),
Europa (2007, 21 Projekte) und Ganymede (2008, 24 Projekte). Von
diesem Namensschema verabschiedete man sich bereits im Jahr 2009,
da man befrchtete, dass die Anzahl der Jupitermonde (von denen laut
Wikipedia mindestens 63 bekannt sind) nicht hoch genug ist. So lie
es sich jedenfalls ein Eclipse-Entwickler in einem Interview im Eclipse-
Magazin[2] entlocken:
We changed the naming scheme because we were concerned
that we were going to run out of names long before we ran out
of steam on the release train...
Der Release-Zyklus von 2009, der bereits 33 Projekte beinhaltete, er-
hielt den Namen Galileo, zu Ehren jenes italienischen Astronoms, der
400 Jahre zuvor mit einem selbstgebauten Fernrohr u.a. die bisherigen
Namenstrger entdeckte. Auf Galileo lassen die Entwickler Helios fol-
gen, das nun ganze 39 Projekte umfasst und auch die Basis dieses Buchs
darstellt.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
Vorwort ix
Die Zusammenfassung der sonst unabhngigen Projekte wurde vor-
genommen, weil die Plattform Eclipse nicht nur stetige Erweiterungen
erfuhr, sondern auch tiefgreifende nderungen im Kern umfasste, die in
Teilen Inkompatibilitten zu vorherigen Revisionen verursachten. Be-
nutzer knnen zumindest von den unter gleicher Bezeichnung verf-
fentlichten Paketen sicher sein, dass sie ohne solche auftretenden Kom-
patibilittsprobleme miteinander harmonieren.
ber CDT
Ein halbes Jahr nach der ersten Verffentlichung von Eclipse legte Entstehung von CDT
Konsortiums-Grndungsmitglied und Echtzeitbetriebssystemspezialist
QNX Teile der Quellen seiner QNX Momentics Development Suite
offen. QNX kndigte an, die Suite in das Eclipse-Framework einzu-
fgen, und bernahm auch die Leitung des jungen CDT-Projekts, das
zum Ziel hat, Eclipse mit einer exiblen Untersttzung der Program-
miersprachen C/C++ zu ergnzen. Im April 2003 folgte dann die erste
Verffentlichung von CDT fr Eclipse 2.0. So wurde die Behauptung,
Eclipse sei eine Mehrsprachenplattform, das erste Mal tatschlich rea-
lisiert: Neben einfachem Syntax Highlighting integrierte man die GNU-
Toolchain, wobei auch der Debugger nicht ausgelassen wurde.
CDT war auch Teil der ersten koordinierten Verffentlichung der Aktuelle Version
Eclipse-Projekte im Jahr 2006, zu der es CDT schon bis zur Version 3.1
geschafft hatte. In der letzten Fassung von 2010 liegt es bereits in Ver-
sion 7.0 vor, die auch Gegenstand dieses Buchs ist. Der schnelle Sprung
zu hohen Versionsnummern zeigt, dass CDT eine sehr dynamische Ent-
wicklung hinter sich hat.
CDT macht vom Angebot der Eclipse-Plattform Gebrauch, eige-
ne spezische Erweiterungspunkte bereitzustellen. Das erlaubt auch fr
CDT ein gewisses Ma an Flexibilitt. So ist es fr einen Anbieter
einer Compiler-Suite sehr leicht mglich, diese in das Eclipse-/CDT-
Framework einzubinden.
Zielsetzung des Buchs
Es sind bereits zahlreiche Bcher ber Eclipse erschienen. Schaut man
sich den Markt jedoch genauer an, so stellt man schnell fest, dass sich
die meisten Werke dem Produkt Eclipse nur in Zusammenhang mit der
Java-Entwicklung nhern. Andere Plugins oder andere Programmier-
sprachen nden, wenn berhaupt, nur am Rande Erwhnung.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
x Vorwort
Dieses Buch mchte die Lcke fr die Programmiersprache C und
ihren Abkmmling C++ schlieen und den Leser in die Benutzung von
Eclipse und CDT einfhren.
Kenntnisse ber Eclipse sind nicht notwendig. Weiterhin ist es un- Vorkenntnisse
erheblich, in welcher Art und Weise der Leser seine C/C++-Projekte
bisher verwirklicht hat, sei es mittels einer Entwicklungsumgebung wie
Microsofts Visual Studio oder ganz traditionell ber Texteditor, Make
und Kommandozeile.
In die Programmiersprachen C und C++ kann das Buch jedoch Keine Einfhrung in
C/C++ nicht einfhren. Hierfr existiert bereits sehr gute und umfangrei-
che Literatur [11], die teilweise sogar kostenlos angeboten wird, wie
z. B. im Falle des Wikibooks C-Programmierung, auf das unter der
URL http://de.wikibooks.org/wiki/C-Programmierung zugegriffen wer-
den kann. Die Handhabung von Werkzeugen, die unmittelbar mit der
Programmiersprache assoziiert sind, wie z. B. Make, steht ebenso we-
nig im Vordergrund. Dennoch ist das Buch auch fr C/C++-Einsteiger
als Ergnzung zu einem C/C++-Einfhrungsbuch von Interesse, da ei-
ne Umgebung wie CDT dem Entwickler jede Menge Hilfestellungen
in den einzelnen Entwicklungsphasen liefert und es ihm erlaubt, sich
auf das Wesentliche zu konzentrieren. Gerade Neulinge werden dies als
praktisch empnden. Beispielsweise sind Kenntnisse ber das erwhnte
Make bei vielen Projekten gar nicht ntig.
Das Buch beschreibt CDT in seiner rohen Form, so wie es von Hauptschlich
CDT pur eclipse.org heruntergeladen werden kann. Erweiterungen, die in den
CDT-basierten Entwicklungsumgebungen von Drittanbietern zu nden
sind, spielen nur eine geringe Rolle. Da das Buch eine benutzerorien-
tierte Einfhrung darstellt, wird auch die Beschreibung der API auen
vor gelassen, die ausschlielich fr die Entwicklung von Erweiterungen
fr CDT von Bedeutung ist. Ein solches Vorhaben erfordert selbstver-
stndlich Kenntnisse ber viele Konzepte und Ablufe von CDT, auf die
in den entsprechenden Abschnitten detailliert eingegangen wird. Inso-
fern werden Sie auch als potenzieller Plugin-Anbieter von der Lektre
protieren knnen.
Buchaufbau
Die Grobgliederung des Buchs besteht aus drei Teilen. Der erste Teil Einfhrung
fhrt Sie in die Welt von Eclipse und CDT ein. Los gehts mit einer
Installationsbeschreibung, die je nach verwendeter Plattform und An-
forderung mehr oder weniger kompliziert durchgefhrt werden muss.
Anschlieend werden Sie in die Begriffe und die wichtigsten Prozeduren
anhand eines eingngigen Beispiels eingefhrt. So knnen Sie bereits
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
Vorwort xi
nach kurzer Zeit einfache C/C++-Projekte mit Eclipse/CDT erstellen,
bearbeiten, bersetzen, ausfhren und debuggen.
Der zweite Teil orientiert sich an den einzelnen Phasen, die ein CDT als Untersttzer in
den einzelnen Phasen
des Entwicklungs-
prozesses
C/C++-Programmierer zu bewerkstelligen hat, damit am Ende ein lauf-
fhiges Produkt zustande kommt. Es wird aufgezeigt, was mit Eclip-
se/CDT derzeit mglich ist, bei welchen Problemen Ihnen diese Kombi-
nation Hilfestellungen geben kann und was derzeit noch nicht oder nur
unzureichend implementiert ist. Zustzlich zu der Beschreibung der Be-
dienung werden konkrete Problemstellungen aufgezeigt, die unter Zu-
hilfenahme kleiner Beispiele eine Lsung nden.
Der dritte Teil widmet sich schlielich weiterfhrenden Themen. Weiterfhrende
Themen Sie werden z. B. erfahren, wie Sie Ihre Projekte mit Eclipse in einem
Team organisieren, mit Hilfe von zustzlichen Plugins aufgabenfokus-
sierte Entwicklung betreiben oder Debugging-Tools wie Valgrind in den
Entwicklungsprozess einbeziehen.
Terminologie
Eclipse ist internationalisiert und kann so theoretisch in anderen Spra-
chen als Englisch betrieben werden. Allerdings wurde bisher nur fr
die Version 3.2 von Eclipse ein komplettes Sprachpaket durch IBM ge-
sponsert, das fr aktuelle Versionen nur beschrnkte Gltigkeit hat.
Aus diesem Grund wird hier mit der englischen Version des Programm-
pakets gearbeitet. Die im Buch verwendete Terminologie, z. B. bei der
Beschreibung von Benutzeroberchenelementen, ist deshalb ebenso an
die englischen Fachausdrcke angelehnt, wenn dafr keine adquate
bersetzung bekannt ist.
Webseite und Kontakt
Zum Buch existiert eine Webseite, die Sie unter
http://www.dpunkt.de/buecher/3282.html
abrufen knnen. Neben den Quelltexten und einer Errata-Liste sind
dort alle im Buch aufgefhrten Verweise auf Webressourcen verzeich-
net. Zustzlich nden Sie einen Katalog von Eclipse-Erweiterungen, die
besonders C/C++-Programmierer interessieren knnten.
Haben Sie Fragen zum Buch, einen Fehler entdeckt, Vorschlge
oder Kritiken? Dann knnen Sie mir unter
mail@sebastianbauer.info
eine Nachricht zukommen lassen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
xiii
Inhaltsverzeichnis
I Einstieg in Eclipse und CDT 1
1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1 C/C++-Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Das richtige Eclipse-Archiv nden . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Installation unter Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.1 Compiler und Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.2 Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3.3 Eclipse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4 Installation unter Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.1 Compiler und Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.2 Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4.3 Eclipse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4.4 Wascana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5 Die Eclipse.ini-Datei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.6 Willkommen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.7 Eclipse erweitern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.7.1 CDT nachtrglich installieren . . . . . . . . . . . . . . . . . . . . . . . . 20
1.7.2 Update-Sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.7.3 Features verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.7.4 Die CDT-Features im Detail . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.7.5 Eclipse Marketplace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.7.6 p2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2 Erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.1 Konzepte des Eclipse-Frameworks . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.1.1 Workspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.1.2 Ressourcen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.1.3 Eclipse-Workbench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.1.4 Menleiste. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.1.5 Werkzeugleiste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.1.6 Statusleiste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.1.7 Editoren und Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.1.8 Perspektiven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
xiv Inhaltsverzeichnis
2.2 Das erste Projekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.2.1 Eclipse anpassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.2.2 Ablauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.2.3 Ein neues Projekt anlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.2.4 Die Quelldatei erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.2.5 bersetzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.2.6 Ausfhren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.2.7 Programmfehler aufspren . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.2.8 Zusammenfassung und Ausblick . . . . . . . . . . . . . . . . . . . . 48
2.3 Das Eclipse-Hilfesystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.3.1 Dokumentationsaufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.3.2 Hilfefenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.3.3 Kontextbezogene Hilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.4 Eclipse ber die Tastatur steuern . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.5 Ntzliche Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.5.1 Voreinstellungsdialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.5.2 Hierarchie der Voreinstellungen . . . . . . . . . . . . . . . . . . . . . 54
2.5.3 Allgemeine Workspace-Einstellungen . . . . . . . . . . . . . . . . 55
2.5.4 Workspace-Auswahl beim Starten und Beenden . . . . . 57
2.5.5 Netzwerkeinstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.5.6 Einstellungen fr SSH-Client . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.5.7 Passwortspeicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.5.8 Komponenten (de-)aktivieren . . . . . . . . . . . . . . . . . . . . . . . 60
2.6 Die Benutzerschnittstelle anpassen . . . . . . . . . . . . . . . . . . . . . . . . . 61
2.6.1 Werkzeug- und Menleiste anpassen . . . . . . . . . . . . . . . . 62
2.6.2 Perspektiven verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
2.6.3 Tastatursteuerung anpassen . . . . . . . . . . . . . . . . . . . . . . . . . 65
2.6.4 Erscheinungsbild. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.7 Verzeichnislayout auf dem Datentrger . . . . . . . . . . . . . . . . . . . . . 68
2.7.1 Programmverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
2.7.2 Workspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
II Entwicklung mit CDT 73
3 Projekte erstellen und bearbeiten . . . . . . . . . . . . . . . . . . . . . 75
3.1 Konzepte von CDT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.1.1 Parser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.1.2 Indexer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.1.3 Piktogramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.1.4 Kurze Einfhrung in das Build-System . . . . . . . . . . . . . . . 78
3.2 C/C++-Projekte in CDT erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.2.1 Projekte anlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
Inhaltsverzeichnis xv
3.2.2 Dateien erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.2.3 Verzeichnisse hinzufgen . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.2.4 Vorhandene Projekte importieren . . . . . . . . . . . . . . . . . . . 89
3.2.5 Projekt entfernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.2.6 Projekttyp ndern. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
3.3 Eigenschaften von Ressourcen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
3.4 Projekt: Dirscanner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
3.4.1 Boost installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.4.2 Dirscanner entwickeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3.5 Quelltexte bearbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
3.5.1 Grundstzlicher Aufbau eines Editorfeldes . . . . . . . . . . . 104
3.5.2 Textpassagen markieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
3.5.3 Quelltext formatieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
3.5.4 Editierhilfen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
3.5.5 Prsentation der Quelltexte . . . . . . . . . . . . . . . . . . . . . . . . . 107
3.5.6 Annotationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
3.5.7 Code-Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
3.5.8 Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
3.5.9 Content-Assistenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
3.5.10 Makros untersuchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
3.5.11 Find/Replace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
3.5.12 Setters und Getters erzeugen . . . . . . . . . . . . . . . . . . . . . . . 124
3.5.13 Methode implementieren . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
3.5.14 Kommentare fr externe Dokumentationswerkzeuge. 125
3.5.15 Bookmarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
3.5.16 Makele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
3.5.17 Undo/Redo-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
3.6 Dateienvergleich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
3.6.1 Zwei Dateien vergleichen . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
3.6.2 Drei Dateien vergleichen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
3.6.3 Lokale Historie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
3.7 Working-Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
3.7.1 Ein Working-Set erstellen. . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
3.7.2 Working-Sets einschalten . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
3.7.3 Workbench-Working-Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
3.8 Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
3.8.1 Tasks hinzufgen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
3.8.2 Tasks durch spezielle Schlsselwrter . . . . . . . . . . . . . . . . 137
3.8.3 Tasks anzeigen lassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
3.9 Refaktorisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
3.9.1 Ressourcen umbenennen . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
3.9.2 Bezeichner umbenennen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
3.9.3 Konstanten extrahieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
xvi Inhaltsverzeichnis
3.9.4 Lokale Variablen extrahieren . . . . . . . . . . . . . . . . . . . . . . . . 144
3.9.5 Eine Funktion oder Methode extrahieren . . . . . . . . . . . . 145
3.9.6 Methoden verstecken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
3.9.7 Refaktorisierungshistorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
3.10 Parser- und Indexerdetails . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
3.10.1 Parser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
3.10.2 Indexeroptionen anpassen . . . . . . . . . . . . . . . . . . . . . . . . . . 151
3.10.3 Weitere Indexer-Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . 155
3.10.4 Indexdatenbank analysieren . . . . . . . . . . . . . . . . . . . . . . . . . 155
3.10.5 Probleme mit dem Indexer . . . . . . . . . . . . . . . . . . . . . . . . . . 156
3.11 Views der C/C++-Perspektive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
3.11.1 Outline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
3.11.2 Include Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
3.11.3 Call Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
3.11.4 Type Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
3.12 Navigations-Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
3.12.1 Navigator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
3.12.2 C/C++ Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
3.12.3 Project Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
3.13 Elemente nden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
3.14 Suchen und Ersetzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
3.14.1 File Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
3.14.2 C/C++ Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
3.15 Textschablonen anpassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
3.15.1 Editorschablonen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
3.15.2 Quelltextschablonen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
3.16 Projektspezische Metadateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
3.16.1 Metadateien im Projektverzeichnis . . . . . . . . . . . . . . . . . . 175
3.16.2 Metadateien im Workspace-Verzeichnis . . . . . . . . . . . . . . 176
4 Der Build-Prozess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
4.1 Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
4.1.1 Die vier Modi eines Builders . . . . . . . . . . . . . . . . . . . . . . . . . 178
4.1.2 Builder-Assoziationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
4.1.3 Builder-Konguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
4.1.4 Zwei Builder fr C/C++-Projekte . . . . . . . . . . . . . . . . . . . . . 181
4.2 Build-Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
4.2.1 Kennzeichen von Build-Variablen . . . . . . . . . . . . . . . . . . . . 182
4.2.2 Build-Variablen benutzen. . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
4.2.3 Gltigkeitsbereich von Build-Variablen . . . . . . . . . . . . . . . 183
4.2.4 Workspace-weite Build-Variablen denieren. . . . . . . . . . 185
4.2.5 Umgebungsvariablen als Build-Variablen. . . . . . . . . . . . . 186
4.2.6 Dynamische Build-Variablen . . . . . . . . . . . . . . . . . . . . . . . . . 186
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
Inhaltsverzeichnis xvii
4.3 Kontrolle ber Managed Build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
4.3.1 Kongurationen verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . 187
4.3.2 Quellverzeichnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
4.3.3 Dateien vom Build-Prozess ausschlieen . . . . . . . . . . . . . 189
4.3.4 Custom Build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
4.4 Einstellungen fr C/C++-Projekte . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
4.4.1 C/C++ Build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
4.4.2 Discovery Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
4.4.3 Paths and Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
4.4.4 Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
4.4.5 Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
4.4.6 Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
4.4.7 Tool Chain Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
4.4.8 Build Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
4.5 Einstellungen fr Ressourcen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
4.5.1 Discovery Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
4.5.2 Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
4.5.3 Tool Chain Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
4.5.4 Path and Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
4.6 Makele-Projekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
4.6.1 Der Make Targets-View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
4.6.2 Make Targets hinzufgen . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
4.6.3 Make Targets bauen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
4.6.4 Make Targets entfernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
4.6.5 Besonderheiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
4.7 Compiler-Ausgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
4.7.1 Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
4.7.2 Voreinstellungen zur Build-Konsole . . . . . . . . . . . . . . . . . . 218
4.7.3 Wie CDT Kommandoausgaben verarbeitet . . . . . . . . . . . 218
4.7.4 Error Parser festlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
4.7.5 Fehler nden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
4.7.6 Fehler ltern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
4.8 Code-Generatoren verwenden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
4.8.1 Beispiel: mathematische Ausdrcke auswerten . . . . . . . 224
4.8.2 Bison installieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
4.8.3 Projekt erstellen und Quelltexte einpegen . . . . . . . . . . 225
4.8.4 Einstellungen anpassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
4.8.5 Projekt bersetzen und ausfhren . . . . . . . . . . . . . . . . . . . 230
4.9 Cross-Compiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
4.9.1 Cross-Compiling fr Make-Projekte . . . . . . . . . . . . . . . . . . 231
4.9.2 Cross-Compiling fr Managed Build . . . . . . . . . . . . . . . . . 231
4.9.3 Beispiel: AmigaOS4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
4.9.4 Cross-Compiling-Plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
xviii Inhaltsverzeichnis
4.10 Remote Compiling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
4.10.1 Das Programm ssh einrichten . . . . . . . . . . . . . . . . . . . . . . . 235
4.10.2 Das Dateisystem einrichten. . . . . . . . . . . . . . . . . . . . . . . . . . 236
4.10.3 Ein Remote-Build-Kommando erstellen . . . . . . . . . . . . . . 237
4.10.4 Remote Compiling in Eclipse anwenden . . . . . . . . . . . . . 238
4.11 Microsoft Visual C++ einbinden . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
4.11.1 Visual C++ installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
4.11.2 Das Projekt einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
4.11.3 Den Build-Prozess anpassen . . . . . . . . . . . . . . . . . . . . . . . . . 243
5 Ausfhren und Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
5.1 Programmstart-Dialoge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
5.1.1 Main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
5.1.2 Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
5.1.3 Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
5.1.4 Common . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
5.2 Doxygen einbinden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
5.2.1 Kongurationsdatei anlegen . . . . . . . . . . . . . . . . . . . . . . . . 255
5.2.2 Doxygen-Tool einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
5.2.3 Doxygen aufrufen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
5.3 Die Launch-Konsole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
5.4 Programme debuggen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
5.4.1 Programme im Debug-Modus starten . . . . . . . . . . . . . . . 259
5.4.2 Multiple Debug-Launcher . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
5.4.3 Debug-Perspektive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
5.4.4 Quelltextpfad lokalisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
5.4.5 Der Debug-View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
5.5 Den Programmablauf gezielt unterbrechen . . . . . . . . . . . . . . . . . 267
5.5.1 Breakpoints-View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
5.5.2 Zeilen-Breakpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
5.5.3 Data-Breakpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
5.5.4 Address-Breakpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
5.5.5 Event-Breakpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
5.5.6 Eigenschaften von Breakpoints . . . . . . . . . . . . . . . . . . . . . . 272
5.6 Ntzliche Views beim Debuggen . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
5.6.1 Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
5.6.2 Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
5.6.3 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
5.6.4 Disassembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
5.6.5 Signale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
5.6.6 Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
5.6.7 Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
5.6.8 Executables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
Inhaltsverzeichnis xix
5.7 Launch Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
5.7.1 Auf entfernten Rechnern debuggen . . . . . . . . . . . . . . . . . 289
III Fortgeschrittene Entwicklung 291
6 Versionsverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
6.1 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
6.1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
6.1.2 Begriffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
6.2 Serverseitige CVS-Komponenten installieren . . . . . . . . . . . . . . . . 297
6.2.1 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
6.2.2 Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
6.3 CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
6.3.1 CVS-Untersttzung von Eclipse einrichten . . . . . . . . . . . 299
6.3.2 Perspektive CVS Repository Exploring . . . . . . . . . . . . . . . . . 299
6.3.3 Repositorys verwalten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
6.3.4 Projekte auschecken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
6.3.5 Dekorationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
6.3.6 Dateien aktualisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
6.3.7 Konikte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
6.3.8 Vernderte Dateien einchecken . . . . . . . . . . . . . . . . . . . . . 306
6.3.9 Neue Dateien einchecken . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
6.3.10 Dateien entfernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
6.3.11 Ressourcen synchronisieren . . . . . . . . . . . . . . . . . . . . . . . . . 309
6.3.12 Dateien markieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
6.3.13 Historie anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
6.3.14 ltere Revisionen wiederherstellen . . . . . . . . . . . . . . . . . . 311
6.3.15 Neue Projekte einchecken . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
6.3.16 Dateien ignorieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
6.3.17 Binrdateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
6.3.18 Dateirevisionen vergleichen . . . . . . . . . . . . . . . . . . . . . . . . . 317
6.3.19 Einen Patch erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
6.3.20 Projekte entkoppeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
6.3.21 Abschlieende Bemerkungen . . . . . . . . . . . . . . . . . . . . . . . 319
6.4 SVN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
6.4.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
6.4.2 Die Perspektive SVN Repository Exploring . . . . . . . . . . . . . 321
6.4.3 Ein neues Repository hinzufgen . . . . . . . . . . . . . . . . . . . . 321
6.4.4 Mit Repositorys arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
6.4.5 Projekte auschecken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
6.4.6 Dekorationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
6.4.7 Neue Projekte einchecken . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
xx Inhaltsverzeichnis
6.4.8 Dateien markieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
6.4.9 Historie anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
6.4.10 Dateien ignorieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
6.4.11 Propertys von Ressourcen . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
6.5 Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
6.5.1 Konzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
6.5.2 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
6.5.3 Die Perspektive Git Repository Exploring . . . . . . . . . . . . . . 332
6.5.4 Ein entferntes Repository klonen . . . . . . . . . . . . . . . . . . . . 333
6.5.5 Projekt in den Workspace importieren . . . . . . . . . . . . . . . 334
6.5.6 Mit Projekten unter Git arbeiten . . . . . . . . . . . . . . . . . . . . . 335
6.5.7 Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
6.6 Team-Synchronizing-Perspektive . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
6.6.1 Synchronize-View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
6.6.2 Konikte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
7 Mylyn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
7.1 Mylyn installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
7.2 Einfhrendes Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
7.3 Konzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
7.4 Task Connectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
7.4.1 Bugzilla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
7.4.2 Mit SourceForge verbinden. . . . . . . . . . . . . . . . . . . . . . . . . . 352
8 Target Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
8.1 Das Target-Management-Plugin installieren. . . . . . . . . . . . . . . . . 357
8.2 Konzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
8.3 Die Perspektive Remote System Explorer . . . . . . . . . . . . . . . . . . . . 359
8.4 Der Remote Systems-View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
8.5 Der Remote Monitor-View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
8.6 Eine neue Verbindung anlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
8.7 Die Verbindung aktivieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
8.8 Durch Ressourcen navigieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
8.9 Filter und Filterpools erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
8.10 Prole verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
8.11 Ein Projekt auf den entfernten Rechner exportieren . . . . . . . . . 367
8.12 Entfernte Projekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
8.13 DataStore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
8.13.1 DataStore auf Linux einrichten . . . . . . . . . . . . . . . . . . . . . . 368
8.13.2 DataStore auf Windows einrichten . . . . . . . . . . . . . . . . . . . 369
8.14 Den entfernten Rechner (fern-)steuern . . . . . . . . . . . . . . . . . . . . . 369
8.14.1 Kommandos aufrufen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
8.14.2 Terminals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
Inhaltsverzeichnis xxi
8.15 Programme auf dem entfernten Rechner ausfhren und de-
buggen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
9 Linux-Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
9.1 Linux-Tools installieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
9.2 Autotools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
9.2.1 Autotools-Projekt erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . 374
9.2.2 Editoren fr Autotools-Dateien . . . . . . . . . . . . . . . . . . . . . . 375
9.2.3 Autotools-Projekte bersetzen. . . . . . . . . . . . . . . . . . . . . . . 375
9.2.4 Autotools manuell aufrufen . . . . . . . . . . . . . . . . . . . . . . . . . 376
9.2.5 Globale Voreinstellungen. . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
9.2.6 Projekteinstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
9.3 Valgrind-Plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
9.3.1 Hintergrnde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
9.3.2 Erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
9.3.3 Valgrind kongurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
9.3.4 Weitere Anwendungsbeispiele . . . . . . . . . . . . . . . . . . . . . . 382
9.4 Proling mit GProf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
9.5 Weitere Plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
Glossar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
7
Teil I
Einstieg in Eclipse und CDT
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3
1 Installation
In diesem Kapitel wird auf die Installation der IDE eingegangen. Die
Voraussetzungen knnen sich je nach Art des Betriebssystems zum Teil
erheblich unterscheiden. Aus diesem Grund wird nach einer zunchst
allgemeinen Einfhrung in die von CDT untersttzten Compiler die
Installation unter Linux und Windows in zwei getrennten Abschnit-
ten beschrieben. Falls Sie Eclipse bereits benutzen, beispielsweise fr
Java-Projekte, sind fr Sie wahrscheinlich nur die Abschnitte 1.3.1 bzw.
1.4.1 und 1.7.1 von Interesse.
Sowohl Eclipse als auch CDT laufen auf weiteren Plattformen, auf Mac OS X
die in diesem Buch jedoch nicht explizit eingegangen wird, hauptsch-
lich weil dem Autor eine solche Plattform nicht zur Verfgung stand.
Zu diesen Plattformen zhlt auch Mac OS X, fr das Eclipse ab Versi-
on 3.5 sowohl die klassische Carbon-Schnittstelle nutzt als auch in einer
Cocoa-Implementierung vorliegt. Die Installation sollte hier allerdings
hnlich der Linux-Variante verlaufen.
1.1 C/C++-Compiler
Im Unterschied zu den Java Development Tools (JDT), die einen eige-
nen Java-Compiler integriert haben, bringt das CDT in der standard-
migen Auslieferung keinen C/C++-Compiler mit sich. Vielmehr agiert
CDT als Frontend fr eine Reihe von Compilern. Dabei werden in der
Version 5.0 von CDT die C/C++-Compiler der GNU Compiler Collec-
tion, ihre Windows-Portierung MinGW sowie optional, d. h. ber wei-
tere Zusatzpakete, IBM XL C/C++ untersttzt, auf die in diesem Buch
aber nicht eingegangen wird. C-Dialekterweiterungen wie Unied Par-
allel C knnen Sie auf diese Weise gleichfalls benutzen. Wie Sie spter
sehen werden, ist es auch mglich, andere bersetzungsprogramme wie
z. B. Visual C++ einzubinden, wenngleich schon hier deutlich gemacht
werden soll, dass diese Variante stark an Komfort zu wnschen brig
lsst, sofern die Anbindung nicht ber ein Zusatzpaket realisiert ist. Fr
Visual C++ lag ein solches Zusatzpaket bei Drucklegung noch nicht vor.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4 1 Installation
1.2 Das richtige Eclipse-Archiv nden
Seit der Europa-Verffentlichung im Juli 2007 existieren bereits auf ver-
schiedene Entwicklerbedrfnisse zugeschnittene Pakete, die neben dem
Hauptprogramm auch gleich die notwendigen Plugins beinhalten. Im
Besonderen existiert auch ein solches fr die C/C++-Entwicklung, das
wir nun herunterladen mchten.
Ausgehend von http://www.eclipse.org/ folgen Sie einem Down- Eclipse/CDT-Paket
nden load-Link, um auf eine Seite mit der Adresse
http://www.eclipse.org/downloads/
zu gelangen. Dort werden die fr spezielle Aufgabengebiete zusammen-
geschnrten Pakete prsentiert, wie in Abbildung 1-1 zu sehen ist. Die
hier interessante Variante verbirgt sich freilich unter Eclipse IDE for
C/C++ Developers. Der Link fhrt ber eine Mirror-Seite zum Archiv,
das Sie am besten jetzt herunterladen. In der Regel sind die darin ent-
haltenen Dateien auf Ihrer Plattform lauffhig. Schlgt die korrekte Er-
kennung Ihrer Systemkonguration im Browser jedoch fehl, dann fh-
ren die Links zum Ziel, die in der Abbildung eingekreist sind. Sobald
das Archiv erfolgreich heruntergeladen worden ist, knnen Sie je nach
Betriebssystem zur nchsten oder bernchsten Sektion im Buch ber-
gehen.
Abb. 1-1
Ausschnitt der
Downloadseite vom
Oktober 2010. Der
untere Kreis fhrt zu
den relevanten
Archiven. Der obere
Kreis zeigt die Auswahl
fr das Betriebssystem
an. Werden Sie hier
nicht fndig, knnen
Sie ber Other
Downloads (mittlerer
Kreis) fortfahren.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
1.3 Installation unter Linux 5
Ist es nicht gelungen, eine kompatible Version zu nden, dann lokali- Eclipse 3.6 ohne CDT
herunterladen sieren Sie auf der Webseite den Link mit dem Titel Other Downloads,
der sich beim Paket Eclipse Classic benden sollte. Dieser fhrt Sie zu
einer Webseite, die unter der Adresse
http://download.eclipse.org/eclipse/downloads/
abgelegt ist. Auf ihr bendet sich eine Liste, die zahlreiche weitere Pa-
kete enthlt, darunter auch die neusten Meilensteine und die aktuellen
Nightly Builds. Die letzte ofzielle Verffentlichung nden Sie immer
unter Latest Release. Fr dieses Buch stellt Version 3.6.x die Grundlage
dar.
Wenn Sie wieder einem dieser Links folgen, erhalten Sie eine Seite,
die mehrere Listen enthlt, wovon Sie die Liste Eclipse SDK in Abbil-
dung 1-2 sehen knnen. Darin werden alle von Eclipse untersttzten
Architekturen aufgefhrt, von denen Sie sich eine passende aussuchen.
So existiert das Produkt unter Linux fr x86, x86 fr 64 Bit und fr
den PowerPC
1
. In gleicher Vielfalt gibt es Eclipse fr das Windows-Be-
triebssystem, hier allerdings neben x86 auch fr IA64 anstelle fr den
PowerPC. Versionen fr andere Betriebssysteme wie Mac OS X oder
QNX sind hierber ebenso in diversen Ausfhrungen verfgbar.
Eine Eclipse-Version, zu der auch gleich CDT geliefert wird, nden
Sie in diesen Listen jedoch nicht. Sie sollten deshalb auf jeden Fall Ab-
schnitt 1.7.1 nicht vergessen, da dort beschrieben wird, wie CDT zu
einer bestehenden Eclipse-Installation hinzugefgt wird. Welches der
aufgefhrten Pakete ist aber das richtige? Wenn Sie auch fr Java ent-
wickeln mchten, dann bietet sich das Eclipse SDK an. Andernfalls
knnen Sie auch mit dem Archiv Platform Runtime Binary vorlieb neh-
men, das allerdings z. B. auch keine CVS-Untersttzung mit sich bringt.
Selbstverstndlich knnen Sie auch diese bei Bedarf problemlos nachin-
stallieren.
1.3 Installation unter Linux
Um Eclipse und CDT unter Linux zu installieren, existieren im Wesent- Distribution oder
Download? lichen zwei Mglichkeiten. Zum einen bieten zahlreiche Distributionen
Pakete fr Hauptprogramm und CDT-Plugin an, zum andern lsst sich
Eclipse ber die Downloadseite von http://www.eclipse.org herunterla-
den, so wie in Abschnitt 1.2 beschrieben.
Durch die automatische Ausung von Paketabhngigkeiten stellt
der erste Weg sicher, dass alle von Eclipse geforderten Softwarevoraus-
1
Neben der GTK-Variante existiert immer noch eine an Motif angepasste
Version, die allerdings unter Linux zunehmend an Bedeutung verliert.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
6 1 Installation
Abb. 1-2
Auszug der Liste der
von Eclipse
untersttzten
Architekturen vom
Oktober 2010
setzungen erfllt sind. Dagegen ist bei der zweiten Variante der Benut-
zer dafr verantwortlich, dass eine kompatible Java-Runtime sowie die
freie Komponentenbibliothek GTK+, auf die das Benutzerinterface der
in diesem Buch verwendeten Eclipse-Version unter Linux aufsetzt, in-
stalliert sind.
Trotz der automatischen Abhngigkeitsausung, die lange Such- Download
und Findespiele vermeiden wrde, empfehle ich Ihnen, die Installati-
on unter der Umgehung eines Paketverwaltungssystems durchzufh-
ren. Diese Vorgehensweise hat den Vorteil, den Zugriff auf die aktuel-
le Eclipse-Version zu ermglichen, denn oft sind die Paket-Maintainer
verglichen mit der Eclipse-Entwicklung weit im Rckstand. Insbeson-
dere nden sich die relativ hug herausgegebenen Meilensteine kaum
in den Archiven. Zudem knnen Sie auf diese Weise problemlos meh-
rere Versionen von Eclipse installieren, um beispielsweise den neusten
Meilenstein zu testen.
1.3.1 Compiler und Tools
Die Installation von Compiler, Debugger und Make sollte unter Linux
kein Problem darstellen. Hug gehren die wichtigsten Entwickler-
werkzeuge in der Standardinstallation dazu oder knnen zumindest
leicht zum Systemhinzugefgt werden. berprfen Sie, ob die Software
vorhanden ist, indem Sie z. B. im Terminal
gcc --version
und
make --version
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
1.3 Installation unter Linux 7
eingeben. Sollte dies nicht der Fall sein, installieren Sie die notwendigen
Pakete, was Sie bei Debian-Linux mit dem Kommando
aptitude install gcc gdb make
unter root bewerkstelligen.
1.3.2 Java
Damit Sie unter Linux Java-Applikationen wie Eclipse ausfhren kn-
nen, muss Ihr System eine Java-Laufzeitumgebung bereitstellen. Eclipse
ist sowohl mit den Laufzeitumgebungen der von Oracle aufgekauften
Firma Sun, dem quivalent von IBM als auch mit BEA JRockit als lauf-
fhig getestet worden. Hingegen berprft die Eclipse-Foundation die
Plattform nicht mit dem Java-Compiler der GNU Compiler Collection
GCJ, so dass bei dessen Einsatz Probleme auftreten knnen. Empfehlen
wrde ich Ihnen jedoch, tatschlich die von Sun abstammende Lauf-
zeitumgebung zu benutzen, da die Installation recht einfach gelingt.
Die Installation der von Oracle verwalteten Java-Runtime kann
entweder direkt ber das von http://www.java.com/de/ heruntergelade-
ne Archiv oder ber eine Methode erfolgen, die von der Distribution
angeboten wird. Da in der Regel die Installation Root-Zugriff bentigt,
lege ich Ihnen die letztere Methode nahe, da sie distributionspezische
Feinheiten beachtet. Wenn die Java-Laufzeitumgebung in der Version 6
installiert werden soll, erledigen Sie dies unter Debian-Linux z. B. indem
Sie
aptitude install sun-java6-jre
als Root in einer Shell ausfhren.
2
Falls Sie ausschlielich C/C++-
Programme mit Eclipse entwickeln mchten und fr das ganze Themen-
spektrum, das dieses Buch abdeckt, gengt eine Runtime ohne Java-
Entwickleruntersttzung allemal.
1.3.3 Eclipse
Um Eclipse auf Linux zu installieren, ist es ausreichend, das herunter-
geladene Archiv in einem Verzeichnis Ihrer Wahl (z. B. Ihrem Home-
Verzeichnis) zu entpacken. Dort kann Eclipse per Eingabe von
~/eclipse/eclipse
in einer Kommandozeile gestartet werden.
2
Durch den Aufkauf von Sun durch Oracle, kann sich natrlich im erwhn-
ten Paket auch eine Namensnderung ergeben.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
8 1 Installation
1.4 Installation unter Windows
Da Windows keinen C/C++-Compiler mit sich bringt, ist der Aufwand Standardmig kein
eigener
C/C++-Compiler auf
Windows-Systemen
der manuellen Installation etwas grer als unter Linux. Mchten Sie
die GNU Compiler Collection verwenden, haben Sie die Auswahl zwi-
schen zwei verschiedenen Paketen, nmlich Cygwin und MinGW, die
sich in ihrer Philosophie leicht unterscheiden. In Unterabschnitt 1.4.1
beleuchten wir diese beiden Varianten etwas nher und erlutern, wie
sie auf dem Rechner eingerichtet werden knnen. Anschlieend wird
kurz auf die Bereitstellung von Java unter Windows eingegangen, um
sich danach der Installation von Eclipse selbst zuzuwenden.
Wenn Sie etwas Scheu haben, die Schritte einzeln auszufhren, oder Wascana
schnell mit dem Schreiben von Programmen beginnen mchten, knnte
das Projekt Wascana die Lsung sein. Wascana stellt eine komplette
C/C++-Entwicklungsumgebung fr Windows dar, die auf einer Java-
Runtime, Eclipse und demCDT-Paket aufsetzt und dazu gleich MinGW
Compiler und zahlreiche andere fr Windows-Entwickler interessante
Bibliotheken mitbringt. Mehr hierzu erfahren Sie in Abschnitt 1.4.4.
1.4.1 Compiler und Tools
Die erste Variante, einen lauffhigen GNU Compiler auf Windows zu Cygwin
verwenden, wird durch das Cygwin-Projekt ermglicht. Cygwin zielt
auf eine mglichst einfache Portierung von POSIX-kompatibler Soft-
ware auf das Windows-Betriebssystem ab. Es ist dabei als dynamische
Bibliothek entworfen, die die POSIX-API transparent auf die Windows-
API abbildet. Neben einer Flle von Entwickler-Tools existiert eine brei-
te Palette von Software, die auf diese Weise auf Windows lauffhig
gemacht worden ist. Als komplexer Vertreter solcher Software sei ein
kompletter X-Server genannt.
Die zweite Option bietet das MinGW-Projekt. Dabei steht die Ab- MinGW
krzung MinGW fr Minimalist GNU for Windows. Die Entwick-
ler verfolgen eine mglichst umfassende Untersttzung zum Kompilie-
ren von GNU-Programmen, die dann nativ auf dem Windows-Betriebs-
system laufen.
Im Rahmen dieses Buchs ist es bis auf wenige Ausnahmen unerheb- Cygwin oder MinGW?
lich, fr welche Variante Sie sich entscheiden. An gegebener Stelle wird
auf die Ausnahmen hingewiesen. Prinzipiell ist es mglich, beide Versio-
nen parallel zu installieren und bei Bedarf umzuschalten. Unterschiede
gibt es allerdings in der Verteilung der damit erzeugten Programme:
Whrend die mit der GPL-Variante von Cygwin erstellten Programme
nur unter einer von der Open Source Initiative akzeptierten Lizenz (z. B.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
1.4 Installation unter Windows 9
GPL) verteilt werden drfen, unterliegt die Verteilung der mit MinGW
entwickelten Programme keinerlei Einschrnkung.
Cygwin installieren
Laden Sie zuerst die setup.exe-Datei von
http://www.cygwin.com
herunter. Dieses Programm wird sowohl fr die Einrichtung als auch
fr die Aktualisierung der Cygwin-Umgebung benutzt. Fhren Sie diese
Datei nach dem Download aus. Es erscheint ein Wizard, der Sie durch
die Installation fhrt.
Abb. 1-3
Pfad- und
Benutzereinstellungen
Die erste Seite knnen Sie mit Weiter berspringen. Whlen Sie auf Installationsquelle
festlegen und Pfad-
und Benutzer-
einstellungen
vornehmen
der zweiten Seite Install from Internet aus und gehen Sie zur nchs-
ten ber. Sie sollten eine Darstellung wie in Abbildung 1-3 vor sich
haben. Hier werden Sie aufgefordert, den Pfad des Root-Verzeichnisses
festzulegen, das innerhalb der Cygwin-Umgebung mit / angesprochen
werden kann und in dem die von Unix-Betriebssystemen bekannte Ver-
zeichnisstruktur angelegt wird. Ebenso knnen Sie entscheiden, ob im
weiteren Verlauf Cygwin lediglich fr das aktuelle Benutzerkonto in-
stalliert wird, oder ob es fr alle Benutzerkonten bereitgestellt werden
soll, was dann Administratorrechte erfordert. Klicken Sie anschlieend
erneut auf Weiter.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
10 1 Installation
Auf der nchsten Seite sollen Sie ein Verzeichnis angeben, in Wahl von
Download-Verzeichnis
und Internet-Setup
demdie vomInstallationsprogrammheruntergeladenen Pakete abgelegt
werden. Nach erfolgter Wahl des Ordners werden Sie auf der nchsten
Seite aufgefordert, Angaben ber Ihre Internet-Einstellungen zu ma-
chen, bevor das Setup-Programm die Liste aller Mirrors herunterldt
und bei Erfolg dann anzeigt. Whlen Sie davon einen aus, so dass das
Programm nun damit beginnt, die Liste verfgbarer Pakete herunterzu-
laden.
Abb. 1-4
Der Paketbaum von
Cygwin
Die aktuelle Paketliste erscheint auf einer neuen Seite, die in Abbil- Minimale Auswahl der
Pakete: gcc4,
gcc4-core, gcc4-g++,
gdb und make
dung 1-4 zu sehen ist. Bei der Vielzahl der angebotenen Pakete kann es
manchmal etwas dauern, bis ein bestimmtes Paket vom Benutzer ent-
deckt wird. Das Feld Search macht Ihnen jedoch das Leben diesbezg-
lich etwas leichter. Fr einen reibungslosen weiteren Ablauf sollten Sie
in All > Devel mindestens die Pakete gcc4, gcc4-core, gcc4-g++, gdb
und make zum Installieren markieren
3
, indem Sie innerhalb der korre-
3
Es gibt auch Pakete mit Namen gcc-core und gcc-g++, die zum Zeitpunkt
der Drucklegung allerdings die recht betagte 3er-Version der GNU Compiler
Collection einbeziehen und deshalb nur in besonderen Fllen installiert werden
sollten. Die paralelle Installation beider Version ist jedoch mglich. Dabei wird
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
1.4 Installation unter Windows 11
spondieren Zeilen in der New-Spalte auf Skip klicken, so dass die zu
installierende Version des entsprechenden Pakets erscheint. Zustzlich
werden dabei alle Pakete automatisch selektiert, von denen die gewhl-
ten Pakete abhngig sind. Klicken Sie dann Weiter, woraufhin die Da-
ten heruntergeladen werden.
Dieser Vorgang sollte kurze Zeit spter erfolgreich zu Ende gefhrt Abschlieende
Installationsschritte worden sein. Sie werden schlielich noch gebeten, anzugeben, ob fr
das ffnen einer Bash-Shell ein Startmeneintrag vorgenommen wer-
den oder ob ein Icon auf Ihrem Desktop erscheinen soll. Schlieen Sie
dann die Installation mit Beenden ab.
Cygwin-Installation testen
ffnen Sie die Bash-Shell, indem Sie z. B. das Piktogramm Cygwin auf
dem Desktop ffnen. Dabei werden beim ersten Start fr den aktuel-
len Benutzer relevante Verzeichnisse wie das Home-Verzeichnis erstellt.
Schreiben Sie danach ein kleines Testprogramm mit Hilfe eines beliebi-
gen Texteditors mit z. B. folgendem Inhalt:
Listing 1.1
Das obligatorische
Hallo Welt gibt es
auch in diesem Buch.
#include <stdio.h>
int main(int argc, char
*
argv[])
{
printf("Hallo Welt!\n");
return 0;
}
Wechseln Sie in der Bash-Shell mit cd in das Verzeichnis, in dem Sie den
Quelltext abgelegt haben. Falls die Datei nicht in einer vom Root-Ver-
zeichnis erreichbaren Position erstellt wurde, hilft Ihnen das Verzeich-
nis /cygdrive weiter, dessen Inhalt alle Windows-Laufwerke abbildet.
Beispielsweise entspricht der Unix-Pfad /cygdrive/c/test.c der Datei
C:\test.c.
Anschlieend kompilieren Sie die Datei, indem Sie
gcc test.c -o test
eingeben. Dabei werden Fehlermeldungen ber die Konsole ausgege-
ben. Bei Erfolg sollten Sie den Kommando-Prompt jedoch ohne weitere
Ausgaben dazwischen vornden. Ausfhren knnen Sie das kompilierte
Programm, indem Sie
./test
der neueren Version der Vorzug gegeben. Explizit knnen Sie die Version beim
Compileraufruf dann ber einem Sufx angeben, z. B. gcc-3.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
12 1 Installation
eingeben, wobei der Punkt, wie in der Unix-Welt blich, fr das aktuelle
Verzeichnis steht.
Programme, die wie oben bersetzt werden, bentigen zur Laufzeit
die cygwin.dll-Bibliothek. Sollte das aus irgendwelchen Grnden uner-
wnscht sein, kann man die Compiler-Option -mno-cygwin benutzen.
Cygwin entfernen
Sollten Sie einmal den Wunsch hegen, Cygwin zu deinstallieren, so ge-
ngt es, das Verzeichnis der Installation zu lschen sowie evtl. Start-
meneintrge oder Desktopsymbole zu entfernen.
MinGW installieren
Wenn Sie sich fr MinGW entschieden haben, dann empfehle ich Ih-
nen zunchst einen Blick auf Wascana zu werfen, dessen Installation
ab Seite 15 beschrieben wird. Wascana bringt neben Eclipse und CDT
eine MinGW- und MSYS-Umgebung mit sich, so dass Sie hier keine
weiteren umstndlichen Installationen durchfhren mssen.
Mchten Sie dennoch den Versuch starten, MinGW selbst zu instal-
lieren, dann gehen Sie auf die Website von MinGW (http://www.mingw.
org/), in der sich bei Navigation unter About > Downloads ein Link
zu MinGWs SourceForge-Release-Seite verbirgt. Von dort laden Sie die
aktuelle Version von Automated MinGW Installer herunter und fhren
die Datei mit Administratorrechten aus. Die folgende Anleitung sttzt
sich auf den Installer, der die Version 5.1.6 trgt.
Das Installationsprogramm zeigt als Erstes eine in die Installation
einfhrende Seite an. Klicken Sie darin auf den Button Next.
Auf der nchsten Seite whlen Sie nun Download and install an
und klicken danach wieder auf Next, um anschlieend die Lizenzbe-
stimmungen zu lesen, die Sie mit I Agree besttigen. Auf der nchsten
Seite knnen Sie sich fr einen Versionszweig entscheiden. Der Instal-
ler schlgt mit Current die im Moment als stabil bezeichnete Version
vor; genau diese empfehle ich Ihnen auch. Mit Klick auf Next wird
auf der nchsten Seite, die in Abbildung 1-5 dargestellt ist, nach den
zu installierenden MinGW-Komponenten gefragt. Fr den C- und C++-
Compiler sollte ein Hkchen vor MinGW base tools und g++ compiler
zu nden sein. Es wird nicht empfohlen, das mitgelieferte Make aus-
zuwhlen, da, sofern Sie Make berhaupt verwenden mchten, MSYS
eine bessere Variante mitliefert und wir die Funktionalitt von MSYS
im weiteren Verlauf des Buchs ohnehin bentigen. Besttigen Sie Ihre
Auswahl mit Next.
Auf der folgenden Seite whlen Sie ein Verzeichnis aus, in dem sich
MinGW nach der Installation benden soll. Nach der Besttigung mit
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
1.4 Installation unter Windows 13
Next whlen Sie den Namen des optionalen Startmeneintrags, bevor
nach erneutem Klick auf Next der Download und danach die Installa-
tion durchgefhrt werden. Kurze Zeit spter sollte eine Erfolgsmeldung
erscheinen, und Sie knnen mit Next und einer nachfolgenden Betti-
gung des Finish-Knopfes die Installation abschlieen.
Abb. 1-5
MinGW-Pakete
Um spter einen reibungslosen Betrieb zu garantieren, schlage ich Ih-
nen auerdem vor, genau wie beim Installieren von Cygwin, ein kleines
Programm zu schreiben und auszufhren.
hnlich wie bei Cygwin hinken die ofziellen Versionen vom Com- Aktuelle Versionen von
MinGW piler der aktuellen Entwicklung der GNU Compiler Collection hinter-
her. Denn auch bei MinGW stammt die als stabil bezeichnete Version
aus dem 3er-Zyklus. MinGW bietet als Technology Preview auch neue-
re Versionen an, die jedoch ohne die Hilfe eines Installationprogram-
mes eingerichtet werden mssen. Zudem handelt es sich nicht immer
um die tatschlich letzte Version.Wenn Sie nicht auf einen aktuellen
MinGW Compiler verzichten mchten und es Ihnen nicht wichtig ist,
ein auf Herz und Nieren getestetes Produkt zu benutzen, dann sind fr
Sie vielleicht die Pakete von TDM unter der Adresse
http://tdm-gcc.tdragon.net/
interessant, die auch durch ein Installationsprogramm eingerichtet wer-
den knnen. Was dieses Buch angeht: der von MinGW eingerichtete
Compiler gengt fr das Nachvollziehen aller Beispiele, so dass die
neuste Version keine Picht ist.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
14 1 Installation
MSYS installieren
MSYS ist die Abkrzung fr Minimal Systemund beinhaltet imWesent-
lich einen Bash-Shell inkl. zahlreicher Tools aus der Unix-Welt, worun-
ter auch make zu zhlen ist. Leider ist die Installation einer aktuellen
Version MSYS alles andere als leicht, denn ein Installer wird derzeit
nicht gepegt. Es wird vielmehr die manuelle Installation empfohlen,
was das manuelle Herunterladen der Pakete einschliet. Viel umstnd-
licher kann ich mir es kaum noch vorstellen.
Das letzte gepegte Installationspaket trgt die Version 1.0.11
und ist zumindest eine solide Ausgangsbasis. Daher empfehle ich,
mit dessen Installation zu beginnen. Hierzu laden Sie sich die Da-
tei MSYS-1.0.11.exe von der File-Area des MingGW-Projekts herunter.
Sie nden die Datei auf der Webseite http://sourceforge.net/projects/
mingw/files/ im Ordner MSYS/Base System/msys-1.0.11.
Der dort enthaltende Installations-Wizard bentigt die Informati-
on, in welches Verzeichnis die Dateien kopiert werden sollen und wel-
che Startmeneintrge anzulegen sind. Nachdem die MSYS-Dateien
dorthin kopiert wurden, fragt das Programm, ob mit dem Post-Install-
Prozess begonnen werden soll. Dies besttigen Sie mit y. Ebenso best-
tigen Sie, dass MinGW bereits installiert ist. Demnach mssen Sie nur
noch den Basis-Pfad dieser Installation eingeben, damit die Installation
beendet werden kann. Wurde der Installationsprozess erfolgreich abge-
schlossen, msste auf dem Desktop das Piktogramm MSYS zu sehen
sein, hinter dem sich die Kommandozeileneingabe verbirgt.
MinGW und MSYS entfernen
Auch MinGW knnen Sie wieder entfernen. Hierfr benutzen Sie am
besten den ofziellen Deinstallationsmechanismus.
1.4.2 Java
Die Java-Installation ist sehr einfach. Laden Sie mindestens die Version
5 von Java auf der Seite mit der Adresse http://www.java.com/de/ her-
unter. Die Runtime-Version ist hierbei vllig ausreichend, falls Sie keine
Java-Software entwickeln mchten. Anschlieend fhren Sie die Instal-
lationsdatei mit Administratorrechten aus und folgen den Hinweisen.
1.4.3 Eclipse
Die Installation von Eclipse beschrnkt sich darauf, ein Zip-Archiv
von http://www.eclipse.org/downloads herunterzuladen und dieses da-
nach in einem Verzeichnis Ihrer Wahl zu entpacken. Unter der genann-
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
1.4 Installation unter Windows 15
ten Adresse knnen Sie sich dann fr das Komplettpaket fr C/C++-
Entwickler oder fr ein anderes entscheiden. Im letzteren Fall wird
Eclipse problemlos C/C++-fhig gemacht, indem Sie das CDT-Plugin
manuell installieren, wie es unter Abschnitt 1.7.1 beschrieben wird.
Bei der Auswahl des Archivs ist es noch wichtig zu beachten, dass 32 Bit oder 64 Bit?
Sie bei einem 32-Bit-System, auch die 32-Bit-Version von Eclipse herun-
terladen. Bei einem 64-Bit-System empehlt es sich die 64-Bit-Version
herunterzuladen, falls Sie auch eine 64-Bit-Runtime von Java installiert
haben.
1.4.4 Wascana
Wascana ist ein Rundum-Sorglos-Paket, das die notwendige Software
enthlt, womit Sie unter Windows sofort in die C/C++-Entwicklung
einsteigen knnen. Neben einer Java-Runtime, Eclipse und CDT selbst,
sind im Paket nmlich auch eine aktuelle MinGW-Toolchain sowie
verschiedene Entwickler-Archive bekannter Open-Source-Bibliotheken
wie z. B. SDL enthalten. Die Projektseite, die auch zum Download
fhrt, ist unter http://www.eclipselabs.org/p/wascana abrufbar. Die In-
stallationsdatei, die die genannten Pakete enthlt, nden Sie unter der
Rubrik Featured downloads. Zum Zeitpunkt der Drucklegung wre
dies wascana-1.0-setup.exe. Laden Sie die Datei herunter und fhren
Sie sie aus.
Abb. 1-6
Installationsprogramm
von Wascana
Die Installation ist denkbar einfach. Starten Sie die eben heruntergela-
dene Datei, Administratorrechte sind dabei nicht ntig, wenn lediglich
der aktuelle Benutzer das Programmverwenden soll. Insgesamt begngt
sich der Installations-Wizard mit der Angabe eines Verzeichnisses, in
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
16 1 Installation
das Wascana installiert werden soll (siehe Abbildung 1-6) und mit De-
tails ber einen Startmeneintrag, bevor die Installation beginnt. Nach
der Installation knnen Sie Wascana starten, in dem Sie eclipse.exe im
Wascana-Zielverzeichnis ausfhren.
Die Update-Site zu Wascana lautet im brigen Wascana nachtrglich
installieren
http://svn.codespot.com/a/eclipselabs.org/wascana/repo.
Damit knnen Sie auch eine bestehende Installation um die Plugins
von Wascana erweitern. Mehr Informationen ber das Erweitern von
Eclipse mit Hilfe von Plugins nden Sie im Abschnitt 1.7 ab Seite 19.
1.5 Die Eclipse.ini-Datei
Eclipse wird ber den sogenannten Eclipse Program Launcher gestar-
tet. Im Falle von Windows heit diese Datei eclipse.exe, bei Linux hin-
gegen eclipse. Dieser Launcher ist dafr verantwortlich, die fr Eclipse
bentigte Java Virtual Machine (Java VM) aufzurufen. Um den Vor-
gang zu beeinussen, existieren diverse Parameter, die entweder als Ar-
gumente im Aufruf oder in der eclipse.ini-Datei im selben Verzeichnis
angegeben werden knnen. Interessant ist dies fr Sie, weil sich so auch
die Parameter der Java Virtual Machine wie z. B. die Grenzen von ver-
schiedenen Arten von Speicher denieren lassen. Die Anordnung der
Argumente wird durch das Schema
<Applikationsargumente>
-vmargs
<Java-VM-Argumente>
deniert. Das bedeutet, dass alle Parameter vor -vmargs der Java-Ap-
plikation (in unserem Fall Eclipse) und alle Parameter danach der Java
VM bergeben werden. Dabei sind die Einstellungen so anzugegeben,
dass jeder Parameter und auch jede Option auf einer eigenstndigen
Zeile stehen.
Normalerweise ist es nur selten notwendig, die Applikationsargu-
mente zu verndern, wenn man Eclipse als reine IDE benutzen mch-
te. Mgliche Optionen sind in Tabelle 1-1 dargestellt, weitere nden
Sie unter http://preview.tinyurl.com/3xwhhna
4
. Demgegenber ist es je-
doch oft sinnvoll, die Konguration der Java VM anzupassen. Achten
Sie insbesondere auf die gleich erwhnten Parameter, die die Speicher-
verwaltung betreffen.
Die Java VM von Sun ist nmlich so konzipiert, dass sie nur ei-
ne begrenzte Gre des Hauptspeichers fr auszufhrende Programme
4
Die verkrzte URL verweist auf eine Hilfeseite von Eclipse.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
1.5 Die Eclipse.ini-Datei 17
Tab. 1-1
Wichtige
Applikationsargumente
Name Bedeutung
-clean Lscht Eclipse-interne Caches.
-data Legt das Verzeichnis fest, in dem Eclipse Ressourcen
wie Projekte und Dateien ablegt.
-launcher.
XXMaxPermSize
Setzt den Parameter MaxPermSize der VM.
-nl Legt die fr das Benutzerinterface verwendete
Sprache fest. Das Format folgt der Java-Konvention.
Die Angabe von z. B. de
_
DE lsst die Oberche auf
Deutsch erscheinen.
-showsplash Lsst ein Startfenster mit einer Fortschrittsanzeige auf
dem Bildschirm erscheinen.
-vm Damit knnen Sie die Java VM angeben, unter der
Eclipse ausgefhrt wird.
beansprucht. Der maximale Heap kann mittels Kommandozeilenopti-
on -Xmx beeinusst werden. So wrde z. B. der folgende Ausschnitt einer
eclipse.ini-Datei
...
-vmargs
-Xmx1024m
...
den maximalen Heap-Speicher der Java VM, auf der Eclipse luft, auf
1 GB setzen, was im brigen seit Version 5.0 das vorgabemige Mini-
mum ist. Vor Version 5.0 waren dies jedoch lediglich 64 MB.
Ein weiterer nicht ganz unwichtiger Parameter betrifft die Gre
des Speichers fr permanente Metadaten. Darunter fallen beispielsweise
die Objekte, die von Java fr Klassen und Methoden angelegt werden.
Die standardmige Einstellung ist in den meisten Fllen viel zu gering,
was sich dann bei der Benutzung durch pltzlichen Programmabbruch
und einer ausgeworfenen Meldung wie
java.lang.OutOfMemoryError: PermGen space
bemerkbar macht. Das Java-VM-Argument, ber das die Obergrenze
anpassbar ist, lautet -XX:MaxPermSize. Mit z. B.
-XX:MaxPermSize=512m
knnen Sie die Maximalgre auf 512 MB setzen. Die Vorgabe von
Suns Java VM fr diesen Speichertyp reicht in der Regel nicht aus, al-
lerdings kommt Eclipse mit einer sinnvollen Belegung daher.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
18 1 Installation
1.6 Willkommen
Eclipse ist installiert und kann jetzt von Ihnen zum ersten Mal gestar-
tet werden. Hierfr fhren Sie den Eclipse Program Launcher aus, also
je nach Plattform eclipse.exe oder eclipse. Kurz nachdem der Startbild-
schirm mit dem Eclipse-Logo erscheint, ffnet sich ein Fenster wie in
Abbildung 1-7, in dem Eclipse den Pfad des Workspace erfragt.
Abb. 1-7
Auswahl des
Workspace
In einem Workspace werden die Einstellungen sowie die zu Ihren Pro- Den Workspace-Pfad
von Eclipse festlegen jekten gehrenden Ressourcen abgelegt. Verwenden Sie Linux, so eignet
sich beispielsweise ein workspace-Verzeichnis in Ihrem Heimatverzeich-
nis. Dies entspricht auch dem Vorschlag von Eclipse. Im Gegensatz da-
zu ist der von Eclipse unter Windows vorgeschlagene Pfad fr meinen
Geschmack zu lang, so dass ich ihn auf D:\workspace gendert habe.
Existiert das Verzeichnis nicht, so wird es von Eclipse automatisch an-
gelegt.
Mit der Option Use this as the default and do not ask again legen Den
Workspace-Selektor
unterdrcken
Sie dar, dass Sie vorerst nicht mehr wnschen, mit der Frage nach dem
Pfad konfrontiert zu werden: Eclipse wird von nun an immer den aus-
gewhlten Pfad annehmen. Dies ist sicherlich dann sinnvoll, wenn Sie
nur einen Workspace benutzen mchten. Auf der Voreinstellungsseite
General > Startup and Shutdown > Workspaces knnen Sie Ihre Wahl
bei Bedarf spter revidieren. Es ist mglich, den Workspace-Selektor zu
unterdrcken, indem Sie beim Start von Eclipse einen Workspace mit
Hilfe des Applikationsarguments -data angeben.
Das Besttigen des geffneten Dialogs lsst den Startvorgang er- Willkommen bei
Eclipse kennbar an einem Fortschrittsbalken im Startbildschirm weiterlaufen,
bis schlielich das Hauptfenster auf dem Bildschirm erscheint. Wird
Eclipse zum ersten Mal gestartet, hlt jenes auch als Workbench be-
zeichnete Fenster neben der Menleiste einen hbschen Willkommens-
bildschirm fr Sie bereit, den Sie auch in Abbildung 1-8 bewundern
knnen. Diese Sicht besteht aus vielen bunten Symbolen, die Sie auf
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
1.7 Eclipse erweitern 19
Eclipse-interne Hilfedokumente, Tutorials und dergleichen verweisen
mchten.
Abb. 1-8
Eclipse mchte Sie mit
diesem hbschen
Bildschirm herzlich
willkommen heien.
1.7 Eclipse erweitern
Ohne Frage ist die Flexibilitt von Eclipse eine hervorstechende Eigen-
schaft, die der Plattform eine stetig wachsende Beliebtheit beschert. Es
existiert eine enorme Anzahl von Erweiterungen, die zum Teil auf ganz
spezielle Anwenderbedrfnisse zugeschnitten sind. Dazu gehrt nicht
zuletzt auch jene, von der dieses Buch handelt und fr uns C/C++-Ent-
wickler hchstwahrscheinlich die interessanteste ist. Thema des aktu-
ellen Abschnitts wird sein, wie Sie Ihre Eclipse-Installation erweitern
knnen freilich in diesem Rahmen nur aus Sicht eines Anwenders.
Hierzu bedarf es zunchst einer Quelle, von der die Erweiterung Update-Site
bezogen wird. In der Eclipse-Welt hat sich hierfr der Name Update-
Site eingebrgert. Eine Update-Site bezieht sich auf Ressourcen im In-
ternet oder auf eine Datei, die sich auf Ihrer Festplatte bendet. ber
diese Ressource hat man Zugriff auf Features. Features sind im Eclipse-
Jargon die Pakete, die Module und Plugins bndeln und diese mit ei-
nemNamen und einer Beschreibung versehen. Eclipse selbst ist auch ein
Feature. Features knnen zudem andere Features bedingen, so dass ein
konsistenter Installationszustand gewhrleistet wird. Die Verwaltung
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
20 1 Installation
der Features geschieht auf Benutzerseite ber den Install New Softwa-
re-Wizard.
Der erste Teil dieses Buchabschnitts verfolgt ausschlielich das Ziel, Die Installation von
CDT wird im ersten
Abschnitt geschildert.
zu einer bestehenden Eclipse-Installation die relevanten CDT-Features
hinzuzufgen, wenn diese damit noch nicht ausgestattet ist. Das Ganze
wird im Schnelldurchlauf behandelt, so dass Leser, die gleich begin-
nen mchten, nicht unntig aufgehalten werden. Sie knnen sich ohne
Bedenken dem nchsten Kapitel zuwenden und zu einem spteren Zeit-
punkt zum Rest des Abschnitts zurckkehren.
Interessierte Leser nden ausfhrliche Informationen zur Erweite- Mehr Informationen in
den folgenden Teilen rung von Eclipse im Anschluss an den ersten Unterabschnitt. Hierzu
werden zunchst die Vorgehensweisen beschrieben, die fr die Verwal-
tung der Update-Sites notwendig sind. Anschlieend werden Sie ber
die eigentlichen Belange aufgeklrt: das Hinzufgen, Aktualisieren und
Entfernen von Erweiterungen. Der vierte Unterabschnitt zeigt Ihnen
auf, wo Sie gezielt nach Informationen ber Eclipse-Plugins Ausschau
halten knnen. Ebenso wird darin der Market Place Client vorgestellt,
der das Aufnden und die Installation von Erweiterungen ungemein
vereinfacht. Einen Abschluss ndet das Thema Erweiterung mit einem
kurzen berblick ber das, was den eigentlichen Kern der Bereitstellung
der behandelten Funktionen ausmacht.
1.7.1 CDT nachtrglich installieren
Falls Sie sich bei der Eclipse-Installation nicht fr das vorgefertigte
Eclipse-C/C++-Paket oder Wascana entschieden haben, mssen Sie ab-
schlieend CDT installieren, so dass Eclipse um die Untersttzung un-
serer Lieblings-Programmiersprache erweitert wird.
Der Install New Software-Wizard stellt dabei eine komfortable Netzwerkkonguration
und Proxyeinstellung Schnittstelle dar, um das System mit weiteren Features zu ergnzen.
In diesem Abschnitt ist ein Zugriff auf das Internet erforderlich, wobei
HTTP-Verbindungen nicht geblockt werden drfen. Falls Sie hinter ei-
ner Firewall arbeiten und eine Proxy-Einstellung bentigen, so sollten
Sie zuerst den Menpunkt Window > Preferences... auswhlen und von
dort aus die Seite General > Network Connections aktivieren. Eigene
Angaben zu den Proxies machen Sie, indemSie, wie in Abbildung 1-9 zu
erkenen ist, zunchst bei Active Provider den Eintrag Manual whlen,
bevor Sie mit Edit... die Proxy-Angaben vervollstndigen. Besttigen
Sie den Dialog mittels OK.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
1.7 Eclipse erweitern 21
Abb. 1-9
In den Network
Connections knnen
Sie Angaben ber
bentigte Proxys
machen.
Whlen Sie im Hauptfenster den Menpunkt Help > Install New Soft- Wizard: Install New
Software ware... an, woraufhin sich der erwhnte Install New Software-Wizard
ffnet.
Wir beziehen CDT ber die Update-Site von Helios
5
und aktivieren Die Update-Site von
Helios deshalb in der Combo-Box bei Work with den Eintrag, der mit Helios
beginnt, so wie es in Abbilding 1-10 dargestellt ist. Daraufhin verbindet
sich Eclipse mit der Update-Site, ldt Informationen ber die verfgba-
ren Features herunter und bringt sie bei Erfolg auf den Bildschirm
6
,
wobei Features per Vorgabe in Kategorien aufgelistet werden.
Das fr uns interessante Feature trgt den Namen Eclipse C/C++ Das richtige
CDT-Feature
auswhlen
Development Tools. Es bendet sich in der Kategorie Programming
Languages. Haken Sie deshalb den entsprechenden Eintrag ab, wie es
in Abbildung 1-10 gezeigt wird.
Klicken Sie im Wizard dann auf Next >, um auf die nchste Seite
zu gelangen. Auf dieser Seite knnen Sie generell die zu installierenden
Features noch einmal begutachten. Nach dem erneuten Besttigen mit
einem Klick auf Next > kommen Sie auf eine Seite, in der Sie die Li-
zenzbestimmung durchlesen knnen. Um fortzufahren, mssen Sie die-
5
Falls Sie eine Nachfolgeversion von Eclipse benutzen, so wird die Seite
vermutlich einen anderen Titel tragen. Der Nachfolger von Helios wird wahr-
scheinlich unter den Namen Indigo verffentlicht.
6
Wenn es nicht auf Anhieb funktioniert, berprfen Sie bitte noch einmal
die Internetverbindung und die Proxy-Einstellungen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
22 1 Installation
Abb. 1-10
Der Feature-Baum mit
dem ausgewhlten
Feature, das zu
installieren ist
se mit I accept the terms of the license agreements akzeptieren, wie in
Abbildung 1-11 zu sehen ist. Mit einem Klick auf Finish knnen Sie die
Installation, die von einem Dialog mit einer mehr oder weniger genau-
en Fortschrittsanzeige untermalt ist, letztlich in die Wege leiten. Wenn
dann auch noch alles glatt gegangen ist, wird Sie Eclipse nach einem
Neustart fragen. Hierauf sollten Sie mit Yes antworten. Die Installation
ist damit abgeschlossen.
1.7.2 Update-Sites
Informationen zu Erweiterungen von Eclipse sind gewhnlich ber die
Internetadresse des Plugin-Anbieters zu erreichen. Dort nden Sie hu-
g unter der Kategorie Update- oder Software-Sites den Ausgangspunkt
fr Erweiterungen in Form einer URI. Dahinter verbirgt sich fr Eclipse
eine kurze Auistung aller die Erweiterung betreffenden Features, von
denen Sie die gewnschten zur Installation auswhlen.
Die Verwaltung der Update-Sites in Eclipse knnen Sie wie die In-
stallation von Erweiterungen mit dem Install New Software-Wizard be-
ginnen, der mit Hilfe des Meneintrages Help > Install New Software...
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
1.7 Eclipse erweitern 23
Abb. 1-11
Lizenzbestimmungen
hervorgerufen werden kann. Die Update-Sites, die Ihrer Installation be-
kannt sind und nicht deaktiviert wurden, nden Sie, wie im letzten Ab-
schnitt schon gesehen, in der Combo-Box Work with wieder.
Um eine neue Site fr die Auswahl hinzuzufgen, klicken Sie auf Update-Site
hinzufgen den Button Add. Im Dialog, der anschlieend zum Vorschein kommt
und in Abbildung 1-12 gezeigt wird, geben Sie die Internetadresse fr
die neue Site und einen aussagekrftigen Namen ein.
Manchmal werden Plugins auch ohne Update-Site als herunterlad- Update-Site als Archiv
bare Datei angeboten. Hat man die Datei zur Hand, lassen sich auf
diese Art Features auch ohne Internetzugriff installieren. Ein solches
Archiv knnen Sie mit dem Button Archive... auf Ihrer Festplatte lo-
kalisieren. Wenn das Archiv schon entpackt auf der Festplatte vorliegt,
dann nutzen Sie den Button Local... und geben den Pfad des Verzeich-
nisses an.
Auch CDT existiert in Form eines solchen Archivs. Sie nden das Master-Archiv von CDT
sogenannte Master-Archiv von Helios, indem Sie die Adresse
http://download.eclipse.org/tools/cdt/releases/helios/
in einem Webbrowser eingeben. Zudem werden die Nightly Builds, also
ganz frische, jedoch nicht ausreichend getestete Versionen von CDT,
nur auf diesem Weg angeboten.
7
7
Die Nightly Builds von CDT nden Sie auf http://download.eclipse.org/
tools/cdt/builds/. Bedenken mssen Sie bei der Verwendung von Nightly
Builds jedoch, dass sich diese nicht unbedingt mit Eclipse 3.6 vertragen und
gegebenenfalls neuere Versionen voraussetzen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
24 1 Installation
Abb. 1-12
Eine neue Update-Site
hinzufgen
Sie erlangen die vollstndige Kontrolle ber die Update-Sites auf der
Voreinstellungsseite Install/Update > Available Software Sites, die in
Abbildung 1-13 dargestellt ist und auch per Klick auf den Link Availa-
ble Software Sites im Wizard erscheint. Dort werden in einer Liste al-
le bekannten Update-Sites aufgelistet. Mit der Auswahlbox vor jedem
Eintrag entscheiden Sie, ob die Site bei der Installation inspiziert werden
soll (und in der Combo-Box Work with erscheint). Mit den Buttons, die
sich rechts neben der Liste benden, knnen Sie neue Sites hinzufgen,
bearbeiten oder entfernen.
Abb. 1-13
Verfgbare
Software-Sites
Des Weiteren ist es mglich, die komplette Liste von Eintrgen als
XML-Datei mit Export... auf einen Datentrger abzulegen. Mit Im-
port... kann eine so gesicherte Liste wieder importiert werden, wobei
darin nicht vorkommende Sites bestehen bleiben.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
1.7 Eclipse erweitern 25
1.7.3 Features verwalten
Neue Features knnen Sie wie beschrieben ber den Install New Soft-
ware-Wizard installieren. Andere Mglichkeiten, die die Verwaltung
von Features betreffen, nden Sie im Dialog Installation Details wieder,
den Sie ber den Menpunkt Help > About Eclipse SDK mit anschlie-
endem Klick auf Installation Details ffnen. Die folgenden Unterab-
schnitte beschreiben die Mglichkeiten im Einzelnen.
Features aktualisieren
Ist ein Feature bereits installiert, wird frher oder spter eine neuere
Version erscheinen, die Sie anstelle der alten Version benutzen mchten.
Hierzu schalten Sie im Installation Details-Dialog auf das Register In-
stalled Software, in dessen Liste alle installierten Features zu sehen sind.
Selektieren Sie das zu aktualisierende Feature und klicken anschlieend
auf den Button Update.... Eclipse kontaktiert daraufhin die Update-
Sites, um nach neueren Versionen zu suchen, und prsentiert das Er-
gebnis in einem neuen Fenster. Hier haben Sie die Wahl, den Vorgang
fortzusetzen oder abzubrechen. Der Rest ist zum Installieren identisch.
Im brigen knnen Features auch ber den Install New Software-
Wizard aktualisiert werden. Sie sind dann anhand des Update-Symbols
von anderen Features zu unterscheiden.
Features entfernen
Selbstverstndlich knnen Sie Features auch wieder entfernen. Hier-
zu selektieren Sie die entsprechenden Eintrge im Installation Details-
Dialog und klicken dann auf Uninstall.... Auch hier untersucht Eclipse
Abhngigkeiten und weist auf Konikte und Probleme hin.
Installationskongurationen zurcksetzen
Im Register Installed Software sehen Sie die aktuelle Installationskon-
guration, die angibt, welche Features momentan installiert sind. Im
Register Installation History nden Sie hingegen den Verlauf der In-
stallation von Features wieder.
Wenn die aktuelle Konguration Probleme bereitet, in etwa, weil
sich Features miteinander nicht vertragen, knnen Sie hier die Installa-
tionskonguration auf einen beliebigen Zustand zurcksetzen. Das ge-
schieht, indem Sie die gewnschte Konguration selektieren und dann
auf den Button Revert klicken. Hierbei ist zu bemerken, dass der Instal-
lationsverlauf nicht zurckgesetzt wird, so dass sie ohne Schwiergkeit
auch wieder zum vorherigen Zustand zurckschalten knnen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
26 1 Installation
1.7.4 Die CDT-Features im Detail
Die CDT-Entwickler stellen neben dem Hauptfeature, das wir in Ab-
schnitt 1.7.1 installiert haben, noch weitere Features bereit. Angeboten
werden diese allerdings nicht ber die Helios-Update-Site, sondern ber
die Update-Site, die eigens fr die Helios-Version von CDT eingerichtet
wurde. Die URL der Site lautet
http://download.eclipse.org/tools/cdt/releases/helios,
wobei Abbildung 1-14 einen Teil des aufgeklappten Feature-Baum
zeigt.
Abb. 1-14
Der Feature-Baum der
Update-Site von CDT
In Tabelle 1-2 nden Sie die Pakete, die im Baumals Hauptfeatures cha-
rakterisiert werden, whrend Tabelle 1-3 die optionalen Features dar-
stellt. Dabei ist es vielleicht interessant zu erwhnen, dass ein Haupt-
feature lediglich eine Art Meta-Bundle darstellt, das mehrere der als
optional deklarierten Features einschliet.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
1.7 Eclipse erweitern 27
Tab. 1-2
CDT Main Features
Name Beschreibung
C/C++
Development
Tools
Stellt den Kern von CDT dar. Dieser schliet neben
dem Editor, der Suche, dem Indexer und weiteren
Komponenten die CDT-spezische
Benutzerdokumentation ein.
C/C++
Development
Tools SDK
Bietet Schemas fr Erweiterungspunkte an, die
notwendig sind, falls man ein auf CDT basierendes
Plugin entwickeln mchte. Beinhaltet auch die
CDT-spezische Entwicklerdokumentation.
1.7.5 Eclipse Marketplace
Natrlich stellt sich die Frage, wie man Plugins ndet, die bei der ak-
tuellen Aufgabenstellung hilfreich sind. Selbstverstndlich knnen Sie
hierfr eine Websuchmaschine Ihrer Wahl bemhen; einen kompletten
berblick erhalten Sie so allerdings nicht.
Bis einschlielich des Galileo-Releasezyklus wurde dafr oft das
Portal Eclipse Plugin Central als zentrale Anlaufstelle zu Rate gezo-
gen, in welchem Entwickler Ihre Eclipse-Plugins verzeichnen konnten.
Auf den Zug der Application-Stores und Markets aufspringend, ist die-
ses Konzept fr das Helios-Release zum Eclipse-Marketplace ausgebaut
worden, dessen Internetseite nunmehr ber die Adresse
http://marketplace.eclipse.org/
abrufbar ist.
Das Neue daran ist vor allen Dingen der Marketplace Client, ein Marketplace Client
aufrufen Plugin, ber das Sie direkt in Eclipse Zugriff auf den Marketplace ha-
ben, umdort verzeichnete Plugins mglichst einfach installieren zu kn-
nen, ohne sich mit Update-Sites belasten zu mssen. Der Client, der
hug schon Bestandteil einer Basisinstallation von Eclipse ist, kann
ber den Menpunkt Help > Eclipse Marketplace... geffnet werden.
Abbildung 1-15 zeigt den Dialog.
Finden Sie den Menpunkt nicht, dann knnen Sie den Client nach- Marketplace Client
nachtrglich
installieren
trglich installieren. Hierzu suchen Sie im Install New Software-Dialog
ber den Meneintrag bei Work with das Helios-Repository aus und in-
stallieren das Plugin, das sich hinter demEintrag General Purpose Tools
> Marketplace Client, verbirgt. Beim Aufnden des Eintrags kann bei
der Vielzahl von anderen Plugins erneut die Suchfunktion sehr ntzlich
sein.
Haben Sie den Client geffnet, dann knnen Sie zunchst im Re- Marketplace Client
anwenden gister Search nach Plugins suchen, wobei die Suche nach Namen auch
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
28 1 Installation
Name Beschreibung
C/C++ Code Analysis Framework
(Codan)
Beinhaltet ein Framework fr die Statische Codeanalyse.
C/C++ Development Platform Beinhaltet wie das Tools-Feature den Kern von CDT,
jedoch ohne die Untersttzung der GNU-Toolchain.
C/C++ DSF GDB Debugger
Integration
Anbindung von GDB fr das Debuggerframework von
CDT
C/C++ GCC Cross Compiler
Support
Fgt eine Toolchain hinzu, die den Umgang mit Cross
Compilern vereinfacht.
C/C++ GDB Hardware Debugging Fgt eine neue Startkonguration (launch conguration)
hinzu, mit der Sie GDB fr Hardware-Debugging
benutzen knnen
C/C++ GNU Toolchain Build
Support
Bindet die GNU-Toolchain ein.
C/C++ GNU Toolchain Debug
Support
Hiermit knnen Sie Programm unter der Kontrolle des
GNU-Debuggers laufen lassen.
C/C++ Memory View
Enhancements
Erweiterungen zum Speichermonitor des
Debugger-Frameworks
C/C++ Remote Launch Erlaubt das entfernte Starten von Programmen.
C99 LR Parser Ergnzt CDT um die Untersttzung des ISOC99-Standards
CDT Tests Hierunter verbirgt sich leider kein Testframework fr
C/C++-Programme, sondern eine Sammlung von
Test-Plugins, die die Entwicklung von CDT betreffen.
Eclipse Debugger for C/C++ Ein Debugger, der vollstndig im Eclipse-Framework
implementiert ist und als solches keine externe
Debugger bentigt
Miscellaneous C/C++ Utilities Hierunter verbergen sich weitere Hilfsmittel.
Unied Parallel C Berkeley UPC
Tool Chain Support
Fgt eine Toolchain hinzu, die den UPC-Compiler
untersttzt. [1]
Unied Parallel C Support Stellt syntaktische Untersttzung fr den Dialekt Unied
Parallel C bereit. Das Ganze setzt auf dem LR Parser auf.
Unied Parallel C Support SDK Das zugehrige Paket fr Plugin-Entwickler
XL C/C++ Compiler Support Bietet die Untersttzung von IBMs XL C/C++ Compiler an.
XL C/C++ Compiler Support SDK Schemata fr die Anbindung des XL-Compilers
Tab. 1-3
CDT Optional Features
durch Kategorien eingeschrnkt ist. Mit einem Klick auf Install startet
der Installations-Wizard fr dieses Plugin. Die Bekanntmachung einer
Update-Site oder hnliches ist hier also nicht mehr erforderlich. Weite-
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
1.7 Eclipse erweitern 29
Abb. 1-15
Der Marketplace
Client integriert den
Marketplace in das
Eclipse-Framework und
erleichtert so die
Installation von
weiteren Plugins.
re Register sind Recent und Popular. Ersteres zeigt Ihnen neue Plugins
auf, whrend Letzteres sehr beliebte, d. h. hug installierte Plugins auf-
weist. Das vierte Register Installed soll Ihnen einen berblick ber die
bereits aus dem Marketplace installierte Plugins verschaffen, wobei sie
auf diese Weise auch bequem deinstalliert werden knnen.
1.7.6 p2
In Zusammenhang mit der Eclipse-Installation im Allgemeinen trifft
man seit Eclipse 3.4 unweigerlich auf das Krzel p2. Eine Neuerung,
die mit p2 Einzug in Eclipse hielt, ist kurz gesagt verminderte Redun-
danz, wenn Sie mehrere Installationen nutzen mchten: Whrend frher
im Prinzip jede Eclipse-Installation einen kompletten Satz von Plugins
mitfhren musste, so knnen diese jetzt geteilt werden.
Ein Begriff, der in der p2-Welt eine Rolle spielt, ist das Prol. Bei-
spielsweise ist das Eclipse SDK ein Prol. Aber auch das Paket, das aus
Eclipse und CDT besteht, wird ber ein Prol deniert.
Prole knnen auf verschiedene Weise modiziert werden. Das in
diesem Abschnitt vorgestellte Installieren ber die Benutzeroberche
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
30 1 Installation
stellt hierfr eine Variante dar. Wenn Sie jedoch mehr zu dem Thema
erfahren mchten, so nden Sie unter der Webadresse
http://wiki.eclipse.org/Equinox
_
p2
einen Ausgangspunkt, wenngleich die dortigen Beschreibungen sehr
technisch daherkommen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
31
2 Erste Schritte
In diesem Kapitel treten Sie zum ersten Mal in direkten Kontakt mit
Eclipse und CDT. Zunchst werden die Konzepte von Eclipse bespro-
chen und allgemeine Hinweise ber das Arbeiten mit der Benutzerober-
che von Eclipse gegeben. Im zweiten Abschnitt geht es dann gleich
los: Sie erstellen ein kleines Projekt mit Eclipse und CDT und durch-
laufen dabei alle essentiellen Stufen einer Implementationsphase. Im
weiteren Verlauf werden dann wieder allgemeine Eclipse-Features be-
sprochen. Dazu zhlen das Hilfesystem, die Erweiterungsoptionen und
die von der Eclipse-Plattform angebotenen Mglichkeiten, das Benut-
zerinterface den eigenen Bedrfnissen anzupassen.
2.1 Konzepte des Eclipse-Frameworks
Bevor wir mit dem ersten Beispiel beginnen knnen, werden in die-
sem Abschnitt zunchst einige Eclipse-spezische Begriffe und Bedie-
nungselemente eingefhrt. Leser, denen Eclipse bereits vertraut ist, kn-
nen diesen Abschnitt bedenkenlos berspringen und sich gleich Ab-
schnitt 2.2 zuwenden, in dem wir ein erstes C-Projekt erstellen und
dabei den Editor und den Debugger ein wenig kennenlernen.
2.1.1 Workspace
Ein Workspace, zu Deutsch Arbeitsbereich, gehrt zu jeder gestarteten
Eclipse-Instanz. Er ist ein Ordner im Dateisystem, unter dem Projek-
te, deren Einstellungen sowie die Einstellungen der Plattform abgelegt
werden. Der Zugriff auf den Workspace ist exklusiv, d. h., dass lediglich
eine gestartete Eclipse-Instanz darauf zugreifen darf. Mehrere Eclipse-
Instanzen knnen allerdings gestartet werden, wenn sie jeweils verschie-
dene Workspace-Pfade benutzen.
Ist Eclipse einmal gestartet, so knnen Sie im Men File > Switch
Workspace zu einem bereits eingerichten Workspace umschalten. Wenn
Sie einen weiteren Workspace-Pfad einrichten mchten, dann whlen
Sie im selben Men den Menpunkt Other... aus. Daraufhin ffnet sich
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
32 2 Erste Schritte
der schon bekannte Workspace-Selektor, mit dem Unterschied, dass Sie
in Copy Settings die Einstellungen des aktuellen Workspace mit in den
neuen bernehmen knnen (Abb. 2-1).
Abb. 2-1
Der aus Eclipse
hervorgerufene
Workspace-Selektor
2.1.2 Ressourcen
Unter Ressourcen versteht man in der Eclipse-Terminologie all das, was
auf einem Dateisystem abgelegt wird. Neben Dateien und Ordnern gilt
das Projekt als eigenstndiger Ressourcentyp. Die Organisation ist hier-
archisch. Projekte benden sich auf der ersten Ebene. Projekte und Ord-
ner werden auch als Container bezeichnet und knnen Dateien und
weitere Ordner beinhalten. Dabei mssen Dateien und Verzeichnisse
eines Projekts nicht zwangslug auch physisch innerhalb des Projekt-
pfades abgelegt werden, sondern knnen sich als verknpfte Ressource
(engl. linked resource) auch auerhalb davon aufhalten.
2.1.3 Eclipse-Workbench
Die Arbeitsschritte des Entwicklers werden in der Workbench reali-
siert. Eine Workbench, von der durchaus mehrere Instanzen geffnet
sein knnen, ist ein Fenster mit einer Reihe verschiedenartiger Berei-
che, deren konkrete Anzahl und Anordnung frei vom Benutzer gestal-
tet werden kann. Abbildung 2-2 auf Seite 33 zeigt eine dem Auslie-
ferungszustand hnliche Aufteilung, wobei noch einige Projekte geff-
net sind. Wichtige Bedienelemente sind dort besonders hervorgehoben.
Diese werden in den folgenden Abschnitten beschrieben.
2.1.4 Menleiste
Unter der Titelleiste des Fensters bendet sich die Pulldown-Menlei-
ste, ber die die mglichen Kommandos ausgefhrt werden knnen, die
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
2.1 Konzepte des Eclipse-Frameworks 33
Navigation- Menleiste aktiver Werkzeugleiste Perspektiven- Outline-View
Views Editor auswahl
Neu
Speichern
bersetzen
Debuggen
Starten
View-Shortcuts noch mehr Views Statusleiste
Abb. 2-2
Die Eclipse-Workbench
dann eine Vernderung hervorrufen. In Abbildung 2-3 auf Seite 34 ist
die Menzeile etwas vergrert dargestellt. Deren Aufbau hlt sich im
Grunde an die Konventionen fr Benutzeroberchen. Im File-Men
sind Aktionen, um Dateien zu ffnen, zu sichern usw. Im Edit-Men
benden sich typische Aktionen, die z. B. das Kopieren und Einfgen
von ausgewhlten Elementen veranlassen. Hilfe erhalten Sie mit dem
Help-Men, das ganz rechts platziert und in der Abbildung aufgeklappt
ist. Zwischen den genannten Mens benden sich Eintrge, deren Auf-
bau oder gar Vorhandensein vom aktuellen Fokus, aber auch von den
installierten Erweiterungen abhngen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
34 2 Erste Schritte
Abb. 2-3
Die Menzeile, in der
das Men Help
ausgewhlt ist
2.1.5 Werkzeugleiste
Unter der Menleiste bendet sich standardmig die Werkzeugleiste.
Die Werkzeugleiste beinhaltet kleine Buttons, ber deren Aktion ein
Symbol oder ein Tooltip Aufschluss gibt. Der Umfang der Aktionen
ist gegenber der Menleiste auf die am hugsten ausgefhrten be-
schrnkt, dafr knnen Sie diese schneller erreichen.
Die Buttons sind ihrer Funktion nach in sinnvolle Gruppen ange-
ordnet, wobei Sie die Position der einzelnen Gruppen ber eine klei-
ne vertikale Leiste (engl. trim) innerhalb der Werkzeugleiste verndern
knnen, gegebenenfalls auch in weiteren Zeilen. In Abbildung 2-4 bei-
spielsweise wurden die Gruppen in zwei Zeilen aufgeteilt. Einige But-
tons der Werkzeugleiste sind zustzlich mit einemDreieck versehen, das
auf ein Pulldown-Men aufmerksam macht. Mit dessen Hilfe kann die
Aktion przisiert werden. Zum Beispiel bietet das Pulldown-Men des
New C/C++ Project-Buttons ( ) die Mglichkeit, ein neues C-Projekt
oder ein neues C++-Projekt anzulegen oder ein bereits existierendes
Eclipse-Projekt in ein C/C++-Projekt zu transformieren. Auch das kn-
nen Sie in der Abbildung sehen.
2.1.6 Statusleiste
Wie von anderen Programmen bekannt, bendet sich eine Statusleiste
im unteren Teil des Fensters, die beispielsweise fr einen aktiven Editor
die aktuelle Zeilennummer angibt.
2.1.7 Editoren und Views
Der Hauptbereich der Oberche wird durch Editoren und sogenannte Editoren
Views beansprucht. Editoren werden, wie der Name schon sagt, haupt-
schlich zum Bearbeiten von Quelltexten oder allgemeiner von Datei-
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
2.1 Konzepte des Eclipse-Frameworks 35
Abb. 2-4
Buttons sind nach ihrer
Funktion gruppiert und
knnen
Pulldown-Mens
besitzen.
en benutzt. Editoren benden sich im Editorfeld, das in Abbildung 2-
2 (Seite 33) deutlich die zentrale Stelle einnimmt und pro Workbench
hchstens einmal vorkommt.
Demgegenber dienen Views der Darstellung von spezischen In- Views
formationen. Dazu zhlen z. B. andere Darstellungsformen des gerade
in Bearbeitung bendlichen Quelltextes, wie es durch Outline-Viewrea-
lisiert und auf der rechten Seite der Abbildung zu sehen ist. Er gibt einen
berblick ber denierte Funktionen und andere Elemente. Ein View,
der eine gnzlich andere Information anzeigt, ist der Variables-View.
Ihn werden Sie vor allen Dingen beim Debugging ntzlich nden. Auch
die in der Abbildung links dargestellte Projekthierarchie ist ein View
oder, genauer gesagt, ein Vertreter der Navigation-Views, die im Allge-
meinen die hierarchische Organisation der Ressourcen widerspiegeln.
Identizierbar sind Editoren und Views immer anhand der Titel- Titelleiste
leiste, die wie die Fensterdekoration des Desktops in einem aktiven
und einem inaktiven Zustand gezeichnet werden kann. Ebenso ist vom
Desktop die Mglichkeit entlehnt, die Elemente per DragnDrop ber
ihre Titelleiste auf der Oberche verschieben zu knnen. Editoren dr-
fen Sie auf diese Weise ausschlielich in ihrem Bereich neben-, unter-
oder bereinander umstellen, wobei letztere Variante sicherlich die ge-
bruchlichste ist. Bereiche mit berdeckenden Editoren haben dann die
Form eines Registerfelds, in dem die Registerkarten mit den geffneten
Editoren korrespondieren. Dagegen lassen sich Views nur auerhalb
des Editorfelds platzieren, bieten Ihnen ansonsten aber mehr Mglich-
keiten der Positionierung. So knnen sie auch von der Workbench auf
den Desktop gezogen werden, was sie in gewhnliche Fenster verwan-
delt.
Abbildung 2-5 stellt einen View einem Editor gegenber. In beiden Operationen ber der
Titelleiste Elementen sehen Sie ein Kontextmen, das Sie durch einen Rechtsklick
ber der jeweiligen Titelleiste hervorbringen knnen. Darber ist es
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
36 2 Erste Schritte
Abb. 2-5
View und Editor in
Gegenberstellung. Die
Kontextmens knnen
durch einen Rechtsklick
auf die Titelleiste
hervorgebracht
werden.
mglich, die aus graschen Benutzeroberchen bekannten Operatio-
nen wie Minimieren, Maximieren usw. aufzurufen. Andere Auswahl-
mglichkeiten beschrnken sich auf nur einen Typ. So knnen Views
zustzlich vom Workbench-Fenster ber das besagte Men mit Deta-
ched als eigenstndige Fenster herausgelst werden, was dem Heraus-
ziehen des Views entspricht, oder in den Zustand Fast View bergehen.
Ein Fast Viewist eine Art ikonizierter View, dessen Symbol in einer Fast View
speziellen Werkzeugleiste erscheint, die standardmig im unteren Teil
des Fensters ihren Platz ndet. Ein ikonizierter View wird bei Klick
auf sein Symbol dargestellt, verschwindet dann aber wieder, sobald Sie
ein anderes Element aktivieren. Sinnvoll ist dieser Zustand fr nur gele-
gentlich eingesehene Views. In besetzten Zustand knnen Sie die Leiste
in Abbildung 2-6 sehen. Dort sind gerade drei Views ikoniziert: Out-
line, Navigator und Search. Mit dem Button Show View as a fast view,
ber den der Mauszeiger gerade schwebt, knnen Sie die Liste ganz
ink um weitere noch nicht geffnete Views ergnzen.
Abb. 2-6
Fast View-Leiste. Der
Navigator-View ist
gerade geffnet.
Zum Teil lassen sich die eben beschriebenen Funktionalitten auch mit-
tels Tastatur herbeifhren. So knnen Sie beispielsweise mit STRG+M
den momentan aktiven View oder Editor maximieren sehr praktisch,
wenn der der Workbench zur Verfgung stehende Platz recht klein ist
und Sie gerade Modikationen am Quelltext vornehmen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
2.1 Konzepte des Eclipse-Frameworks 37
2.1.8 Perspektiven
Eclipse und CDT bieten eine Vielzahl von Views an, deren Umgang
und Nutzen wir im Laufe dieses Buchs detailliert kennenlernen werden.
Hug wird es so sein, dass der aktuelle Entwicklungsschritt andere
Informationen bentigt als der vorhergehende. Beispielsweise ist beim
Editieren von Quelltexten die bereits erwhnte Projekthierarchie inter-
essant, whrend diese Information speziell beim Debugging weniger
von Nutzen ist. Beim Debugging hingegen mchten wir die Belegung
aller im Scope vorhandenen Variablen wissen. Mit dem Konzept der
Perspektiven bietet Eclipse die Mglichkeit, zwischen Ansichten ver-
schiedener Aufgabenbereiche schnell umzuschalten.
Abb. 2-7
Die Debug- Perspektive
Eine Perspektive bestimmt das Layout der Eclipse-Workbench und de-
niert zustzlich mgliche Aktionen, die von Men- und Werkzeugleiste
in die Gnge gebracht werden knnen. Whrend z. B. in Abbildung 2-
2 die C/C++-Perspektive gezeigt wurde, sehen Sie im Unterschied dazu
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
38 2 Erste Schritte
in Abbildung 2-7 die Debug-Perspektive, eine der Debugging-Aufgabe
angepasste Benutzerschnittstelle. Geffnet werden knnen Perspektiven
z. B., wie in Abbildung 2-8 dargestellt, nach Auswahl des Menpunkt-
es Window > Open Perspective > Other.... Daraufhin erscheint das auf
der rechten Seite abgebildete Fenster, in dem alle vorhandenen Perspek-
tiven aufgelistet sind. Bereits einmal geffnete Perspektiven lassen sich
ber sogenannte Shortcuts rechts oben in der Workbench abrufen. Mit
dem Meneintrag Window > Close Perspective knnen Sie die aktuelle
Perspektive auch wieder schlieen.
Abb. 2-8
Eine beliebige
Perspektive ffnen
Perspektiven knnen wahlweise in der gleichen Workbench umgeschal-
tet werden oder in einem neuen Workbench-Fenster erscheinen. Das
Verhalten lsst sich in den Voreinstellungen, die ber den Menpunkt
Window > Preferences... zu erreichen sind, auf der Seite General > Per-
spectives beeinussen. Neben den durch die Plattform bereitgestellten
Perspektiven ist es auch mglich, eigene Kongurationen zu erstellen.
Das aktuelle Layout lsst sich durch den Menpunkt Window > Save
Perspective As... unter einem neuen Namen abspeichern und mit Win-
dow > Customize Perspective... weiter anpassen. Insgesamt ist die Be-
nutzeroberche sehr exibel, und es lsst sich fast jedes Detail ndern.
Mehr darber erfahren Sie in Abschnitt 2.6 ab Seite 61.
2.2 Das erste Projekt
Dieser Abschnitt soll Ihnen einen Vorgeschmack auf die Arbeit unter
Eclipse und CDT geben, ohne auf Details oder gar spezielle Problem-
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
2.2 Das erste Projekt 39
lsungen einzugehen. Es werden die wichtigsten Schritte anhand einer
kleinen Applikation beschrieben, die die Glieder der Fibonacci-Zahlen-
folge auf dem Bildschirm ausgibt. Sie sind anschlieend in der Lage,
Ihre ersten eigenen Projekte mit CDT zu erstellen und zu warten.
2.2.1 Eclipse anpassen
Fr die C/C++-Entwicklung empehlt es sich generell, das in Eclipse Automatisches
bersetzen
ausschalten
bliche automatische bersetzen von Projekten abzuschalten, das beim
Abspeichern von Quelltexten aktiv wird. Im Gegensatz zum Java-
Builder funktioniert der Build fr C/C++-Projekte nicht inkrementell,
d. h., dass mindestens die eine Datei komplett neu bersetzt wird, an
der Sie eine nderung vorgenommen haben. Dies kann je nach Gre
des Projekts, der verwendeten Include-Dateien sowie der eingebunde-
nen externen Bibliotheken erhebliche Zeit in Anspruch nehmen und
damit den Arbeitsuss beeintrchtigen. Mit Hilfe des Menpunkt Pro-
ject > Build Automatically ist es mglich, diese Funktion ein- oder ab-
zuschalten.
Wenn nicht anders angegeben, nden die Interaktionen mit Eclipse Auf die
C/C++-Perspektive
wechseln
in der C/C++-Perspektive statt, die von CDT fr das Entwickeln von
C/C++-Projekten eingerichtet wurde. ffnen Sie diese bitte, falls sie
noch nicht sichtbar ist.
Jetzt stellt sich noch die Frage, woher CDT wei, wo Compiler und Kann der Compiler
aufgerufen werden? die anderen Tools zu nden sind, die zu Beginn installiert wurden. CDT
benutzt fr das Aufnden der Programme den Kommandosuchpfad,
der ber die Umgebungsvariable PATH global deniert wird. Unter Win-
dows wird jedoch der Compiler nicht zwingend im globalen Komman-
dosuchpfad zu nden sein, wohingegen dies unter Linux eher blich ist.
Sie knnen dies gleich einmal testen, indem Sie in einer Eingabeauffor-
derung das Kommando gcc eingeben. Wird der Befehl gefunden? Falls
dem so ist, dann knnen Sie zum nchsten Abschnitt bergehen.
Wird der Befehl nicht gefunden, mssen Sie der Umgebungsva- Kommandosuchpfad
anpassen riable PATH den richtigen Pfad hinzufgen; hier ist gegebenenfalls ein
Neustart von Eclipse erforderlich. Eine weitere Mglichkiet ist, in den
Eclipse-Voreinstellungen, die ber den Menpunkt Window > Prefe-
rences hervorgerufen werden, auf die Seite C/C++ > Build > Environ-
ment zu gehen, um die Variable ausschlielich fr CDT anzupassen.
Abbildung 2-9 zeigt diese Situation. Um in der Liste den Eintrag hin-
zuzufgen, klicken Sie auf den Button Add.... Im neuen Dialog geben
Sie bei Name den Text PATH ein und bei Value das Verzeichnis, in dem
sich das Programm gcc bendet. Verwenden Sie beispielsweise Cygwin,
dann setzt sich der Eintrag aus dem Root-Verzeichnis, fr das Sie sich
bei der Cygwin-Installation entschieden haben, und \bin zusammen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
40 2 Erste Schritte
Drcken Sie anschlieend Ok, um die Eingabe zu besttigen und auf
Ok im Voreinstellungsfenster, sobald es geschlossen werden soll.
Abb. 2-9
Die Variable PATH
knnen Sie in den
Einstellungen fr
Umgebungsvariablen
anpassen.
Sollten Sie im weiteren Verlauf etwas merkwrdig anmutende Zeichen Zeichensatzkodierung
und Sprache anpassen in Fehlermeldungen vom Compiler entdecken, die in etwa
error:

Al

Z undeclared
lauten, dann besteht sehr wahrscheinlich ein Dissens zwischen Com-
piler und Eclipse ber die verwendete Zeichenkodierung. Insbesondere
knnte dies Cygwin-Benutzer betreffen, da hier seit Version 1.7 UTF8
als Standardkodierung aktiviert ist, die Eclipse-Version fr Windows
aber standardmig die Windows-eigene Kodierung nutzt. Sie knnen
zumindest den Compiler berreden, eine andere Kodierung zu verwen-
den, in dem Sie zustzlich die Umgebungsvariable LANG z. B. auf en set-
zen, was soviel bedeutet, dass alle Nachrichten in englischer Sprache er-
scheinen sollen. Als Zeichenkodierung wird das banale ASCII benutzt,
weil hinter der Zeichenkette en keine spezische Angabe zur Zeichen-
kodierung folgt.
2.2.2 Ablauf
Im Rahmen des einfhrenden Beispiels gebrauchen wir in der Werk-
zeugleiste die Buttons
New C/C++ Project, um ein neues Projekt anzulegen,
New C/C++ Source File, um eine neue Quelldatei zu erstellen,
Save, um nderungen in einer Datei zu sichern,
Build, um das Projekt zu bersetzen,
Run, um das bersetzte Programm in Eclipse auszufhren, und
Debug, um das bersetzte Programm zu debuggen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
2.2 Das erste Projekt 41
2.2.3 Ein neues Projekt anlegen
Whlen Sie im Popup-Men des New C/C++ Project-Buttons in
der Werkzeugleiste den Eintrag C Project
1
. Daraufhin ffnet sich ein
Wizard, der Sie nach dem Namen des Projekts fragt. Wie in Abbil-
dung 2-10 dargestellt, geben Sie hier bitte fibonacci ein. Im Feld Project
type klappen Sie Executable auf und whlen dort den Eintrag Empty
Project. Klicken Sie dann auf Finish, um die Angaben zu besttigen und
den Wizard zu schlieen. Im C/C++ Projects-View sollte anschlieend
ein neues Projekt unter dem angegebenen Namen erscheinen.
Abb. 2-10
Wizard: neue
C-Projekte anlegen
2.2.4 Die Quelldatei erzeugen
Selektieren Sie im C/C++ Projects-View unser eben erstelltes Projekt
und klicken Sie in der Werkzeugleiste auf den Button New C/C++
Source File, woraufhin ein Fenster erscheint, das Sie zur Eingabe des
Ordners und des Namens auffordert. Stellen Sie sicher, dass bei Source
folder der Name unseres Projekts, also bonacci, zu nden ist, und
1
Alternativ knnen Sie im Men den Meneintrag Project > New > C Pro-
ject... auswhlen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
42 2 Erste Schritte
geben Sie bei Source le den Namen bonacci.c an. Die Quelltext-Datei
wird angelegt, sobald Sie die Eingabe mit Finish besttigen.
Es treten nun zwei sichtbare Vernderungen innerhalb der Work-
bench auf. Erstens erscheint im bonacci-Projekt der Dateiname
fibonacci.c. Zweitens, und das ist viel aufflliger, wird das Editorfeld
durch einen Editor fr die neue Datei belegt, wie Sie am Titel deutlich
erkennen knnen. Darin enthalten ist ein Cursor, der uns blinkend zur
Quelltexteingabe auffordern mchte. Seiner Aufforderung nachgehend,
geben Sie den folgenden Quelltext ein und behalten dabei den Outline-
View im Auge:
Listing 2.1
bonacci.c
#include <stdio.h>
unsigned int fib(unsigned int n)
{
int i, f1=0, f2=1, f3;
if (n<2) return n;
for (i=2;i<=n;i++);
{
f3 = f1 + f2;
f1 = f2;
f2 = f3;
}
return f2;
}
int main(int argc, char
*
argv[])
{
for (i=0;i<10;i++)
printf("fib(%u)=%u\n",i,fib(i));
return 0;
}
Zwei sehr ntzliche Funktionen von CDT werden Sie schon beim ersten
Eingeben des Textes bemerken:
1. Sobald Sie eine kleine Pause beim Eingeben machen, wird links
vom eigentlichen Texteditor an der richtigen Zeile ein Warnsym-
bol angezeigt, falls rein formal kein syntaktisch korrekter C/C++-
Quelltext vorliegt.
2. Der Outline-View, der die Struktur des Programms abbildet, passt
sich zgig der aktuellen Eingabe an.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
2.2 Das erste Projekt 43
Sobald Sie fertig sind, bettigen Sie den Button Save, den Menpunkt Benutzen Sie den
Button Save , um
die Datei zu sichern.
File > Save oder den Tastatur-Shortcut STRG+S, um die Datei abzu-
legen. Die Benutzeroberche sollte sich nun in der gleichen Ansicht
benden, wie sie in Abbildung 2-11 zu sehen ist.
Abb. 2-11
Die C/C++-Perspek-
tive mit geffnetem
Quelltext-Editor. Der
Outline-View rechts
zeigt die Struktur des
Quelltextes an.
2.2.5 bersetzen
Um das manuelle bersetzen unseres Projekts zu starten, benutzen Sie
bei aktiviertemProjekt entweder den durch einen Hammer symbolisier-
ten Build-Button aus der Werkzeugleiste oder den Menpunkt Pro-
ject > Build Project. Daraufhin ffnet sich ein Fenster, das Sie ber den
anstehenden bersetzungsvorgang aufmerksam machen mchte. Wenn
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
44 2 Erste Schritte
Sie den Console-View zur Ansicht bringen
2
, werden Sie die aufgerufe-
nen Compiler-Kommandos und ihre Ausgaben umgeben von ein paar
CDT-spezischen Ausgaben erkennen knnen.
Bestimmt haben Sie bei der Eingabe schon bemerkt, dass sich im
abgedruckten Quelltext ein Fehler eingeschlichen hat. Falls Sie diesen
bernommen haben, so verdeutlicht Eclipse den Fehler gleich auf ver-
schiedene Arten, die in Abbildung 2-12 zu sehen sind.
Abb. 2-12
Hinweise auf Fehler
durch Marker und
Unterstreichungen
Den aufflligsten Hinweis gibt dabei der Quelltexteditor selbst. Ein ro-
ter Marker auf der linken Seite des Editors zeigt die Zeile an, bei der
der Compiler den Fehler vermutet. Fhrt man den Mauszeiger ber den
Marker, so erscheint eine genaue Beschreibung, die in etwa
i undeclared (first use in this function)
2
Finden Sie diesen nicht, nutzen Sie bitte den entsprechenden Meneintrag
unter Window > Show View oder die Tastenkombination ALT+SHIFT+Q,C.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
2.2 Das erste Projekt 45
lauten sollte. Logisch, denn die Programmiersprache C erwartet die De-
klaration einer Variablen vor deren Benutzung. Das haben wir nicht
gemacht, und dieses Versumnis wird zurecht vom Compiler moniert.
Wir fgen also vor die Schleife ein int i ein, speichern den Quelltext er-
neut ab und lassen den Compiler wieder seine Arbeit verrichten, indem
wir auf den entsprechenden Button klicken.
Dieses Mal sollten Fehlermeldungen durch den Compiler ausblei-
ben, die roten Marker also nicht mehr zu sehen sein. Eine weitere n-
derung macht sich anschlieend im C/C++-Project-View bemerkbar:
Ein neuer besonders gekennzeichneter Ordner, der den Namen Bina-
ries trgt, zeigt an, dass im Projekt eine ausfhrbare Datei vorhanden
ist. Durch Aufklappen des Ordners knnen Sie sich vergewissern, dass
es sich tatschlich um unsere Fibonacci-Applikation handelt.
2.2.6 Ausfhren
Jetzt, wo alles nach Plan bersetzt wurde, wollen wir das Programm
einmal starten. Stellen Sie hierfr sicher, dass im C/C++-Projects-View
das Projekt fibonacci selektiert ist. Anschlieend knnen Sie den Men-
punkt Run > Run oder den durch ein Play-Symbol gekennzeichneten
Run-Button in der Werkzeugleiste nutzen, um das Programm auszu-
fhren, wobei implizit der bersetzungsprozess noch einmal angesto-
en wird.
Die Standardausgabe der ausgefhrten Programme wird in den
Console-View umgeleitet. In unserem Fall sollte die Ausgabe
fib(0)=0
fib(1)=1
fib(2)=1
...
fib(9)=1
hneln, was nicht genau dem erwarteten Ergebnis entspricht. Es ist also
Zeit, sich dem Debugger zuzuwenden.
2.2.7 Programmfehler aufspren
Sie haben das Problem sicherlich schon beim Eingeben entdeckt oder
sich gar geweigert, den Quelltext in der gedruckten Form abzutippen.
Eventuell haben Sie auch unbewusst den Fehler nicht mit bernommen.
Wie dem auch sei, wir werden jetzt den Debugger zu Rate ziehen, um
dem kleinen Fehler, den wir bei der Konsolenausgabe bemerkt haben,
auf die Schliche zu kommen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
46 2 Erste Schritte
Um das Programm im Debug-Modus zu starten, benutzen Sie den Das Programm mittels
Debug- Button
debuggen
Debug-Button, der sich gleich neben dem Run-Button bendet und
stilecht durch einen Kfer gekennzeichnet ist. Sollten Sie zwischenzeit-
lich etwas am Projekt gendert haben, startet Eclipse zuvor einen neuen
bersetzungsvorgang.
Eclipse wird Sie anschlieend fragen, ob Sie in die Debug-Perspekti- Automatischer Wechsel
in die
Debug-Perspektive
ve schalten mchten; besttigen Sie diese Frage bitte. Wenn Sie die eben-
falls angebotene Option Remember my decision aktivieren, werden Sie
in Zukunft gar nicht mehr gefragt. Nebenbei bemerkt, knnen Sie diese
Entscheidung in den Run/Debug > Perspectives-Voreinstellungen unter
Open the associated perspective when an application suspends auch
wieder rckgngig machen.
Je nach verwendetem Compiler kann es unter dem Windows-Be-
triebssystem vorkommen, dass Eclipse den Quelltext nicht ndet, da
CDT zu Beginn z. B. nichts von Cygwin-Pfaden zu wissen scheint. In
dem Fall haben Sie die Mglichkeit, den Quelltext mit Locate File...
auch fr Eclipse aufndbar zu machen. Unter Linux sollten Sie derarti-
ge Probleme bei diesem Beispiel nicht haben.
Abbildung 2-13 zeigt den Aufbau der Workbench mit gestarteter Aufbau der
Debug-Perspektive Debugging-Session auf. Im Unterschied zur C/C++-Perspektive nimmt
das Editorfeld in der standardmigen Einstellung deutlich weniger
Platz ein. Der C/C++-Project-View mit seiner gesamten Projekthierar-
chie ist gnzlich verschwunden. Der dadurch entstandene Platz wird
durch zwei bisher geschlossene View-Felder ausgefllt. Dabei ist der
hier wichtigste View der Debugging-View, mit dem einige Buttons as-
soziiert sind; durch sie kann der Ablauf des zu debuggenden Programm
gesteuert werden. Im Quelltexteditor korrespondiert ein blauer Pfeil
zumaktuellen Wert des Befehlszhlers der CPU (imEnglischen program
counter oder instruction pointer), also eine Zeile mit einer Anweisung,
die als Nchstes ausgefhrt werden soll. Zu Beginn ist es die Zeile mit
der ersten Anweisung gleich unter dem main()-Funktionskopf.
Um den nchsten Schritt des Programms ausfhren zu lassen, be- Einen Programmschritt
ausfhren nutzen wir den Button Step Over . Nach einem zweiten Schritt steht
der Befehlszhler auf der Zeile mit dem printf()-Aufruf. Der Varia-
bles-View wurde aktualisiert und zeigt fr die Variable i den Wert 0.
Wir lassen das Programm weitere zwei Schritte laufen. Da die Ausgabe
fr i = 2 nicht stimmte, bettigen wir anschlieend den Button Step
Into , mit dessen Hilfe wir in Funktionen hineinspringen knnen.
Der Befehlszhler steht nun auf der ersten Zeile der Funktion fib().
Der Variables-View wurde an die sichtbaren Variablen angepasst. Wir
fhren weitere Schritte aus und berprfen dabei, ob das ndern der
Variablen und der Kontrolluss mit unseren Erwartungen bereinstim-
men. Wenn sich der Befehlszhler hinter dem Schleifenkopf bendet,
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
2.2 Das erste Projekt 47
Abb. 2-13
Die erste
Debugging-Session
sptestens aber, wenn wir den Schleifenrumpf passiert haben, stellen
wir fest, dass die Schleife nicht ordnungsgem abgearbeitet wird. Ge-
nau genommen wird sie berhaupt nicht abgearbeitet. Bei sorgfltigem
Hinschauen ist der beltter schnell erkannt: ein berssiges Semi-
kolon hinter der for-Anweisung. Ein sehr typischer Fehler, der immer
wieder auch von C-Entwicklern mit mehrjhriger Erfahrung gemacht
wird; der Autor schliet sich hier nicht aus.
Noch in der Debug-Perspektive entfernen Sie das Semikolon und Benutzen Sie den
Button Stop , um die
Ausfhrung zu
terminieren.
klicken auf den Button mit dem roten Stoppsymbol, um die Abarbei-
tung des Programmes zu terminieren. Anschlieend sichern Sie die eben
durchgefhrte nderung, bevor das Programm wieder zur Ausfhrung
gebracht werden kann. Dafr gengt ein Klick auf den Run-Button in
der Werkzeugleiste. Die Ausgabe im Console-View sollte jetzt tatsch-
lich die bekannte Fibonacci-Zahlenfolge widerspiegeln.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
48 2 Erste Schritte
2.2.8 Zusammenfassung und Ausblick
In diesem Abschnitt haben Sie erfahren, wie Sie mit Eclipse und CDT
neue Projekte anlegen knnen, haben erste Erfahrungen mit dem Edi-
tor gesammelt, einen kurzen Ausschnitt ber die Arbeitsweise des
Build-Prozesses kennengelernt und unter Zuhilfenahme des Debuggers
einen Fehler aufgesprt. Auf Grundlage der vorgestellten Arbeitsschrit-
te knnten Sie das Buch kurz beiseite legen und zunchst Eclipse auf
eigenem Wege erkunden.
Natrlich liegt der Teufel auch hier im Detail. Der Funktions-
umfang der IDE ist weitaus komplexer, ansonsten wre das Buch
hier bereits zu Ende, und Sie wrden sich wahrscheinlich rgern. Fr
den Rest des Buchs werden Schritt fr Schritt die Mglichkeiten ver-
tieft, die Eclipse, CDT und andere Plugins Ihnen in Sachen C/C++-
Programmieren bieten. Um jedoch eine Vertrautheit gegenber der
Plattform zu gewinnen, bedarf es neben dem Studium auch der prakti-
schen Anwendung. Hier nehmen Sie die Zgel selbst in die Hand und
transferieren, ausgehend von den Beispielen, das Gelernte auf die ei-
genen Problemstellungen. Dabei knnen Sie das Buch ruhig auch ein-
mal zur Seite legen, denn Hilfestellungen, die bei einem solchen Erkun-
dungstrip vonnten sind, vermag Ihnen auch Eclipse in verschiedenen
Formen selbst zu geben. Auf die unterschiedlichen Facetten des Hilfe-
systems soll deswegen im folgenden Kapitel eingegangen werden.
2.3 Das Eclipse-Hilfesystem
Die Eclipse-Plattform kommt mit einem zentralen Hilfesystem daher.
Plugins, die einer Anleitung bedrfen, knnen sich in das System ein-
klinken und Ihnen ihre eigenen Inhalte anbieten. Auf diese Weise haben
Sie zudem den kompletten berblick ber alle auf Ihrem System einge-
richteten Plugins. In diesem Abschnitt werden Sie deshalb erfahren, in
welchen Situationen Sie auf welche Weise die Hilfe aufrufen knnen.
2.3.1 Dokumentationsaufbau
Die oberste Ebene der Dokumentationshierarchie besteht aus den Plug-
ins, die eine Dokumentation beisteuern. Darunter sind die einzelnen
Punkte gegliedert. Die Gliederungsstruktur ist den Entwicklern des
Plugins prinzipiell freigestellt. Die Benutzer ansprechenden Dokumen-
tationen haben jedoch hug eine hnliche Form, so dass Sie sich in
neuen Beschreibungen schnell zurechtnden sollten. Die folgenden The-
men sind nahezu in jeder Dokumentation enthalten:
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
2.3 Das Eclipse-Hilfesystem 49
Getting started. Hier wird der Benutzer schnell in die Arbeitsschrit-
te fr das Plugin eingefhrt, hug in Form von kleinen Tutorials.
Concepts. Diese Sektionen enthalten oft eine bersicht ber das
Plugin und klren ber Konzepte, Begriffe und ihre Zusammen-
hnge auf.
Tasks. Hier werden konkrete Ablufe beschrieben.
References. Das ist eine Art Nachschlagewerk fr das Plugin. Vor-
einstellungen sowie die Funktionsweisen von Editoren und Views
werden erlutert.
Daneben gibt es noch Themen, zu denen keine Unterthemen existieren.
Diese sind hug:
Tips and tricks, in denen sich problemorientierte Tipps nden,
Whats new, worin die nderungen von einer vorherigen Version
des Plugins beschrieben sind, sowie das Thema
Legal, das Informationen bzgl. des Urheberrechts der Dokumenta-
tion beinhaltet.
2.3.2 Hilfefenster
Zugriff auf das Hilfesystem erhalten Sie, indem Sie den Eintrag Help >
Help Contents aus dem Men auswhlen. Eclipse zeigt darin ein zwei-
geteiltes Fenster, das Sie in Abbildung 2-14 sehen knnen. Als eines der
wenigen Fenster in Eclipse ist dieses nicht modal. Das bedeutet, dass
Sie nicht in anderen Eclipse-Fenstern weiterarbeiten knnen, whrend
die Hilfe dargestellt wird, was sicherlich den Zweck einer Hilfe sehr
begnstigt.
Auf der linken Seite ist die Struktur der Hilfe zu sehen. Durch Auf-
klappen von einzelnen Punkten knnen Sie durch die Dokumentation
baumartig navigieren. Der eigentliche Inhalt wird dann im groen Be-
reich Webbrowser-hnlich auf der rechten Seite prsentiert, sobald Sie
ein Thema selektiert haben.
Weitere Interaktionsmglichkeiten bieten die Buttons, die sich ober- Aktionen der
Gliederungsbersicht halb der beschriebenen Bereiche benden. Fr die Gliederungsbersicht
wren dies:
Print topics. Hiermit knnen Sie den Inhalt der ausgewhlten The-
men zu Papier bringen. Sie haben die Wahl, das Thema mit oder
ohne allen zugehrigen Unterthemen auszudrucken.
Search topics. Damit ist es mglich, nach Begriffen innerhalb der
ausgewhlten Themen zu suchen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
50 2 Erste Schritte
Abb. 2-14
Das Hilfefenster hat
einen Aufbau, der
typisch fr ein
hierarchisches
Hilfesystem ist: links
die baumartige
Struktur, rechts der
Inhalt.
Collapse All. Hiermit werden die geffneten Gliederungspunkte ge-
schlossen.
Link with Contents. Falls Sie im rechten Teil durch die Benutzung
von Hyperlinks zu anderen Themen navigieren, so wird das ent-
sprechende Thema auch in der bersicht sichtbar gemacht, wenn
diese Option aktiviert ist.
Fr den Flietext stehen Ihnen neben den Browser-blichen Naviga- Aktionen ber den
Flietext tions-Buttons Forward, Backward und Home noch weitere zur Verf-
gung:
Show in Table of Contents, um die aktuelle Seite in der Hierarchie
des Gliederungsverzeichnisses wiederzunden,
Bookmark Document, um die aktuelle Seite zu den Hilfe-Fenster-
eigenen Lesezeichen hinzuzufgen, sowie
Print Page, um die dargestellte Seite zu drucken.
Den Einblick auf die Lesezeichen nden Sie im Register Bookmarks, Zu den Lesezeichen
nden die Sie im linken unteren Bereich anwhlen knnen. Ein Klick darauf
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
2.3 Das Eclipse-Hilfesystem 51
lsst die einfache Liste erscheinen, deren Elemente mit darber gesetz-
ten Buttons gelscht werden.
Zustzlich zu den Navigationsmglichkeiten ist es mglich, nach Nach Begriffen suchen
Begriffen zu suchen. Hierfr existiert ein Texteingabefeld imoberen Teil
des Fensters, in dem Sie auch die Joker-Zeichen * und ?, die boole-
schen Ausdrcke AND, OR und NOT sowie Anfhrungszeichen
als Kennzeichen fr zusammenhngenden Text benutzen knnen. Die
Ergebnisse werden dann in einem weiteren Register im linken Bereich
prsentiert.
Im brigen ist die Hilfe aller Eclipse-Projekte auch ber das Welt- Die Dokumentation
gibt es auch im Netz. weite Netz unter der Adresse
http://help.eclipse.org
abrufbar. Das Benutzerinterface der Webseite hnelt dem hier vorge-
stellten. Die dort angebotene Dokumentation umfasst jedoch die Texte
aus dem gesamten Spektrum der harmonisiert verffentlichten Eclipse-
Plugins des aktuellen Zyklus.
2.3.3 Kontextbezogene Hilfe
Neben der eben erluterten statischen Hilfe, mit der Sie selbst gezielt
nach Informationen suchen knnen, kennt Eclipse noch das Konzept
der dynamischen oder kontextbezogenen Hilfe, die Sie fr spezische,
gerade in Betrachtung bendliche Elemente erhalten.
Die kontextbezogene Hilfe rufen Sie auf, indem Sie den Menein-
trag Help > Dynamic Help auswhlen oder F1 auf Ihrer Tastatur betti-
gen. Daraufhin ffnet sich das in Abbildung 2-15 illustrierte Help-View,
falls es nicht schon zuvor geffnet war.
Diese Art der Hilfe ist nicht nur fr das Fenster der Workbench Nutzen Sie das
Fragezeichen , um
kontextbezogene Hilfe
in Fenstern zu erhalten.
verfgbar, sondern auch fr andere Fenster. Signal hierfr ist ein klei-
nes Fragezeichen, das in den meisten Fllen im unteren linken Teil des
Fensters zu nden ist. Das Bettigen dieses Symbols oder der F1-Taste
lsst dann im rechten Teil die aus dem Help-View bekannte Ansicht
erscheinen.
ber die eingebetteten Hilfekomponenten haben Sie natrlich auch
auf die aus dem Hilfe-Fenster bekannten Funktionen Zugriff. Hierfr
dienen die Verknpfungen, die sich unterhalb der Go To-Aufschrift be-
nden. Die Themen der statischen Hilfe erhalten Sie mit All Topics,
die Suchfunktion mit Search, den Index ber Index und die Lesezei-
chen mit Bookmarks. Mit dem Punkt Relatic Topics schalten Sie die
kontextbezogene Hilfe wieder ein. Des Weiteren existieren die blichen
Navigationsbuttons: Mittels Back- und Forward-Buttons knnen Sie
entsprechend dem Verlauf vor- oder zurckblttern.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
52 2 Erste Schritte
Abb. 2-15
Kontextbezogene Hilfe.
Der im Help-View
angezeigte Hilfetext
richtet sich nach dem
aktiven Editor oder
View. In diesem Fall ist
der Console-View
aktiviert.
Die erwhnte Suchfunktion, die Sie auch ber den Meneintrag Help > Hilfesystem
durchsuchen Search erreichen, bietet Ihnen zur Suche gegenber dem Hilfesystem ein
weiteres Feature: Denn neben der Suche innerhalb aller lokalen Hilfe-
texte knnen Sie auerdem in anderen Medien suchen. Vorgabemig
wird beispielsweise auch das WWW durch die Suchmaschine Google
nach dem Begriff durchsucht. Kontrolle ber dieses Feature haben Sie
ber den Search scope.
2.4 Eclipse ber die Tastatur steuern
Alle Aktionen sind in Eclipse ber die Tastatur abrufbar. Dies trgt zum
einen der Barrierefreiheit Rechnung, zum andern sind hug benutzte
Funktionen ber Tastaturkrzel schneller zu erreichen.
Zugriff auf die Meneintrge erhalten Sie mit F10 (oder ber die
linke ALT-Taste unter Windows). Sie knnen durch das Men mit den
Cursortasten navigieren und den Eintrag mittels RETURN besttigen.
Es ist auch mglich, die Eintrge mittels des in seiner Beschriftung un-
terstrichenen Buchstabens in Zusammenhang mit ALT auszuwhlen.
Das funktioniert auch fr alle anderen Bedienelemente. Weitere wich-
tige Tastenkrzel, die die allgemeine Bedienung von Eclipse betreffen,
werden in Tabelle 2-1 dargestellt.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
2.5 Ntzliche Einstellungen 53
Tab. 2-1
Wichtige Tastenkrzel
Krzel Funktion
Strg+F6 Editioren durchwandern
Strg+F7 Views durchwandern
Strg+F8 Perspektiven durchwandern
F10 Menleiste aktivieren
Shift+F10 Kontextmen fr den aktuellen View
Ctrl+F10 Pulldown-Men fr den aktuellen View
F12 Editor aktivieren
Strg+M Aktuellen View/Editor maxi-/minimieren
Eine bersicht aller mglichen Tastaturkrzel knnen Sie nach Anwahl
des Meneintrag Help > Key Assist... (STRG+SHIFT+L) einsehen. Die
dort aufgelisteten Eintrge sind kontextbezogen: Nur die Kommandos,
die momentan absetzbar sind, erscheinen dort. Das funktioniert sowohl
fr Views und Editoren als auch fr Eingabefelder in anderen Fenstern.
Die Tastaturkrzel sind nicht fest und knnen den eigenen Bedrf-
nissen angepasst werden. Eine Einfhrung hierfr wird noch in diesem
Kapitel in Abschnitt 2.6.3 gegeben. Die in diesem Buch verwendeten
Tastaturkrzel entsprechen allerdings den Vorgabewerten.
2.5 Ntzliche Einstellungen
Dieser Abschnitt gibt eine Einfhrung in das Voreinstellungssystem von
Eclipse. Eclipse bietet hier eine besonders groe Flle an Mglichkei-
ten. Deshalb soll Ihnen zuerst das Konzept nhergebracht und lediglich
anhand von wenigen, aber ntzlichen Einstellungen die Bedienung ver-
deutlicht werden. Einstellungen, die die Individualisierung der Benut-
zerschnittstelle von Eclipse zum Gegenstand haben, werden dann im
nchsten Abschnitt behandelt. Darber hinausgehende, wichtige Vor-
einstellungen, insbesondere jene, die die Ablufe in der Programmie-
rung betreffen, werden in den einzelnen Kapiteln an entsprechender
Stelle besprochen. Ansonsten gilt auch hier das Motto Anschauen und
Ausprobieren.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
54 2 Erste Schritte
2.5.1 Voreinstellungsdialog
Die Voreinstellungen rufen Sie herbei, indem Sie den Menpunkt Win-
dow > Preferences... auswhlen. Daraufhin erscheint ein Fenster, in des-
sen linkem Teil eine Auswahl von Kategorien prsentiert wird, whrend
Sie im rechten Teil die zur selektierten Kategorie passenden Voreinstel-
lungen vornehmen knnen, wie in Abbildung 2-16 zu sehen ist. Mit
Hilfe der Pfeile im oberen Bereich des Fensters knnen Sie durch be-
reits besuchte Kategorien navigieren.
Mitunter suchen Sie nach einer ganz bestimmten Kategorie. Hier-
fr geben Sie im Texteingabefeld, das sich ber der Kategorieauswahl
bendet, Titel sowie Schlsselwrter ein, nach denen die dargebotenen
Kategorien geltert werden. Wenn Sie beispielsweise Einstellungen des
Proxys verndern mchten, so tippen Sie dort einfach proxy ein, so dass
die Auswahl von Kategorien erheblich schrumpft.
Abb. 2-16
Voreinstellungsfenster.
Hier ist gerade die
Kategorie General
aktiviert.
2.5.2 Hierarchie der Voreinstellungen
Wie alles in Eclipse ist auch die Struktur des Aufbaus der Voreinstellun-
gen alles andere als linear. Vielmehr sind Kategorien hierarchisch ange-
ordnet, um ein leichteres Aufnden von Einstellungen zu ermglichen.
Des Weiteren knnen sich auf diese Weise Plugins an beliebiger Ebene
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
2.5 Ntzliche Einstellungen 55
einklinken und dort neue Kategorien erstellen. Folgende Oberkategori-
en werden im Voreinstellungsdialog bei einer Standardinstallation fr
C/C++-Entwicklung prsentiert.
General. Hier nden Sie alle Einstellungen, die das allgemeine Ver-
halten und Aussehen der Workbench von Eclipse betreffen.
C/C++. Diese Voreinstellungen werden durch das CDT-Plugin hin-
zugefgt. Hier nden sich alle Einstellungen wieder, die speziell die
C/C++-Entwicklung betreffen.
Help. Auch das Verhalten der Hilfe kann mit Einstellungen beein-
usst werden.
Install/Update. Hier knnen Voreinstellungen bezglich des Instal-
lierens von weiteren Plugins und der Strategie ihrer Aktualisierung
vorgenommen werden.
Run/Debug. Das Starten und Debuggen von Programmen stellt in
Eclipse ein separates Konzept dar. Hier nehmen Sie allgemeine Ein-
stellungen vor, die grtenteils visueller Natur sind.
Team. In dieser Kategorie benden sich die Einstellungen, die
sich um die Versionsverwaltung drehen. Die Versionsverwaltung
spielt eine besondere Rolle, wenn Projekte innerhalb eines gre-
ren Teams entwickelt werden. Sie wird in aller Ausfhrlichkeit in
Kapitel 6 behandelt.
Daneben gibt es noch weitere Kategorien. Da Sie mit dem vollstndigen
Eclipse SDK Java- sowie Plugin-Entwicklung betreiben knnen, nden
sich dort beispielsweise zustzlich die Kategorien Ant, Java und Plug-
in Development wieder, die jedoch allesamt weniger interessant fr die
C-/C++-Entwicklung sind.
2.5.3 Allgemeine Workspace-Einstellungen
Die Einstellungen, die das Verhalten des Workspace beeinussen, ben-
den sich auf der Seite General > Workspace. Diese ist in Abbildung 2-17
dargestellt.
Eine Philosophie von Eclipse ist, dass ein sich in Entwicklung be- Projekte automatisch
bauen ndliches Projekt immer in kompilierter Fassung vorliegen soll. Hier-
fr ist die standardmig aktivierte Option Build automatically verant-
wortlich, die das Bauen nach jeder auf dem Datentrger gespeicherten
nderung veranlasst. Auf diese Weise werden die Turnaround-Zeiten
der Entwicklung verkrzt, da der Programmierer schon bei kleinen
Modikationen sofort Feedback ber eventuelle bersetzungsfehler be-
kommt. Leider funktioniert dies nur vernnftig, wenn das bersetzen
an sich ott vonstatten geht, was bei greren C/C++-Projekten nicht
gegeben ist. Hier bietet es sich an, die Option abzuschalten.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
56 2 Erste Schritte
Abb. 2-17
Ansicht der
Voreinstellungseite, die
den Workspace betrifft.
Werden Dateien auerhalb von Eclipse modiziert, so muss man stan- Ressourcen
automatisch
auffrischen
dardmig die genderten Ressourcen oder ihre Container manuell auf-
frischen. Zwar weist Eclipse bei der Prozessierung einer nicht unter
Eclipse vernderten Ressource auf diesen Zustand hin, doch kann das
anschlieend notwendige manuelle Auffrischen den Arbeitsuss st-
ren. Abhilfe schafft hier das Aktivieren der Option Refresh automa-
tically. Allerdings knnte dies zu einer allgemeinen Beeintrchtigung
der Workbench-Performanz fhren, insbesondere dann, wenn sich vie-
le Ressourcen im Workspace benden.
Mit der Option Save automatically before build knnen Sie in Automatisch speichern
Eclipse veranlassen, dass die nderungen aller Ressourcen, die von Ih-
nen gerade bearbeitet werden, vor dem Bauen eines Projekts auch auf
den Datentrger geschrieben werden.
Innerhalb eines Workspace knnen Projekte andere Projekte refe- Besttigungsanfrage,
wenn alle nicht
zugehrigen Projekte
geschlossen werden
sollen.
renzieren, was zum Beispiel sinnvoll ist, wenn Header-Dateien oder
Bibliotheken geteilt werden. Des Weiteren ist es mglich, Projekte zu
schlieen, wenn Sie von Ihnen gerade nicht bearbeitet werden mssen,
so dass sie etwas fokussierter arbeiten knnen. Eclipse hlt eine erwei-
terte Aktion bereit, mit der alle Projekte, die nicht referenziert werden,
auf einmal geschlossen werden. Normalerweise wird Eclipse hierzu eine
Besttigung von Ihnen einfordern, die Option Always close unrelated
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
2.5 Ntzliche Einstellungen 57
projects without prompt erlaubt ihnen allerdings diese Anfrage zu un-
terdrcken.
Weiter unten spezizieren Sie in Workbench save interval die Zeit Periodisch speichern
und Fenstertitel ndern in Minuten, nach der der momentane Zustand des Workspace gesichert
wird. Des Weiteren geben Sie bei Workspace name einen im Fenstertitel
angezeigten Namen an, was sinnvoll ist, wenn Sie mit mehreren Instan-
zen von Eclipse gleichzeitig arbeiten.
Einmal geschlossene Projekte knnen natrlich wieder geffnet Referenzierte Projekte
ffnen werden. Sobald Sie ein geschlossenes Projekt erneut ffnen, legt die
Auswahl im Kasten Open referenced projects when a project is opened
die genaue Verhaltensweise der Workbench fest. Referenzierte Projekte
werden demnach
geffnet, wenn Sie Always angeben, oder
nicht geffnet, wenn Sie Never selektieren. Alternativ werden Sie
bei jedem ffnen
gefragt, wenn Sie Prompt angeben.
Das gleiche Schema nden Sie brigens auch bei anderen Voreinstellun-
gen wieder, etwa auf der Seite Run/Debug > Launching.
In den beiden untersten Ksten geht es um die Kodierung der auf Textkodierungen
Datentrger gesicherten Texte. Whrend in Text le encoding die Ko-
dierung fr sichtbaren Text speziziert ist, wird durch New text le line
delimiter ausschlielich die Kodierung fr den Zeilenabgrenzer angege-
ben. Beide Einstellungen haben keine Auswirkungen auf bereits vor-
handene Texte, so dass sie eigentlich nur bei einem neuen Workspace
modiziert werden sollten, wenn der Bedarf berhaupt besteht.
2.5.4 Workspace-Auswahl beim Starten und Beenden
Attribute, die das Starten und Beenden von Eclipse zum Gegenstand
haben, knnen Sie ber die Kategorie General > Startup and Shut-
down verndern. Insbesondere modizieren Sie in der Unterkategorie
Workspaces Parameter ber die Workspaceauswahl. Die dazugehrige
Seite wird in Abbildung 2-18 gezeigt.
Wenn sich darin ein Hkchen vor Prompt for workspace on startup
bendet, erscheint beim Starten von Eclipse der Workspace-Selektor,
ber den Sie den zu benutzenden Workspace festlegen. Die Anzahl der
Pfade, die sich Eclipse dabei merken soll, wird in der nchsten Zeile
angegeben. Der Rest des Platzes ist von einer Liste ausgefllt, die al-
le bekannten Pfade enthlt. Mit Remove entfernen Sie mglicherweise
nicht mehr erwnschte Pfade. Das Verzeichnis wird hierbei allerdings
nicht physisch auf Datentrger gelscht.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
58 2 Erste Schritte
Abb. 2-18
Voreinstellungen, die
das Starten und
Beenden von Eclipse
betreffen.
2.5.5 Netzwerkeinstellungen
Mit den Netzwerkeinstellungen wurden Sie bereits in Abschnitt 1.7.1
ab Seite 20 konfrontiert, falls Sie CDT mit Hilfe der Funktion Install
New Software... installiert haben. Zustzlich zu der Aktualisierungs-
funktion von Eclipse greifen auch andere Plugins auf die Einstellungen
zurck, wie z. B. die Subversion-Untersttzung. Hauptschlich bedr-
fen sie einer nderung, wenn Sie keine direkte Internetverbindung ha-
ben, sondern nur ber einen Proxy auf die Ressourcen des Internets
zugreifen knnen.
Netzwerkeinstellungen werden Workspace-bergreifend im Ver-
zeichnis configuration des Programmverzeichnisses von Eclipse abge-
legt. Wenn Sie einen neuen Workspace anlegen, dann mssen Sie dem-
nach die Einstellungen nicht erneut vornehmen, was auch sinnvoll ist.
2.5.6 Einstellungen fr SSH-Client
Das Eclipse-Framework besitzt einen integrierten SSH2-Client, der z. B.
von der CVS-Untersttzung, aber auch von anderen externen Plugins
verwendet werden kann. Einstellungen fr diesen nehmen Sie auf der
Seite General > Network Connections > SSH2 vor. Dort benden sich
vier Register General, Key Management, Known Hosts und Authenti-
cations Methods, von denen Sie zwei in Abbildung 2-19 sehen knnen.
Im ersten Register gibt es zwei allgemeine Einstellungen vorzuneh-
men. Zum einen das Verzeichnis der SSH2-Schlssel (SSH2-Home),
zum anderen die privaten Schlssel (Private keys), die bei der Initia-
lisierung der Verbindung benutzt werden sollen.
3
3
Dem Gegenpart mssen entsprechende ffentliche Schlssel bekannt sein.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
2.5 Ntzliche Einstellungen 59
Abb. 2-19
SSH2-Einstellungen
Eine komfortable Mglichkeit, ein neues Schlsselpaar zu erzeugen,
wird gleich im Register Key Management geboten. Mit den oberen
Buttons knnen Sie ein neues DSA- oder ein neues RSA-Schlsselpaar
generieren lassen sowie bereits vorhandene Schlssel laden. Gleich un-
ter den Buttons bendet sich ein Textfeld, in dem sich der ffentliche
Teil des aktuellen Schlsselpaars bendet. Den Inhalt gilt es der Da-
tei authorized
_
keys des Zielrechners hinzuzufgen, die sich dort fr ge-
whnlich ausgehend vom Heimatverzeichnis im Verzeichnis .ssh ben-
det. Ganz einfach geht das per Klick auf den Button Export Via SFTP...,
woraufhin nach Angabe des Zielrechners und Login der Schlssel in die
Datei ohne weiteres Zutun eingefgt wird. Den privaten Schlssel ban-
nen Sie schlielich mit dem Button Save Private Key... auf Ihren lokalen
Rechner. Auf Wunsch knnen Sie den Zugriff auf den Inhalt zustz-
lich durch eine Passphrase sichern, die Sie dann unter Passphrase und
Conrm passphrase eingeben.
Im Register Known Hosts nden Sie alle Rechner wieder, auf de-
nen Sie sich bereits eingeloggt haben. Es wird angenommen, dass Sie
diesen Rechnern vertrauen. Es ist hier jedoch mglich, einzelne Ein-
trge zu entfernen. ber das Register Authentication Methods knnen
Sie entscheiden, welche Methoden benutzt werden soll, um sich beim
entfernten Rechner anzumelden.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
60 2 Erste Schritte
2.5.7 Passwortspeicher
Zu oft nach einem Passwort gefragt zu werden, kann sehr lstig sein
(obgleich das Verhalten natrlich einen gewissen Anreiz darstellt, sich
das Passwort tatschlich zu merken). Deswegen bietet Eclipse einen
zentralen Passwortspeicher an, auf den es bei Bedarf zugreift und so
den Benutzer mit vielen Passwortabfragen verschont. Damit die Sicher-
heit dabei nicht allzu sehr in Mitleidenschaft gezogen wird, verwendet
Eclipse ein Master-Passwort, um den Passwortspeicher zu verschls-
seln. Dieses Masterpasswort kann von Eclipse selbst erzeugt werden,
wobei es dann mit dem Betriebssystem-eigenen Methoden verschlsselt
wird, so dass es z. B. mit dem aktuellen Benutzerkonto verknpft ist.
Alternativ knnen Sie es selbst festlegen, so dass sie sich zumindest das
Masterpasswort merken mssen. All diese Eigenschaften legen Sie auf
der Voreinstellungsseite General > Security > Security Storage fest.
2.5.8 Komponenten (de-)aktivieren
Wenn Sie in Version 3.4 von Eclipse das Set der installierten Featu-
res modizieren, so hat das Auswirkungen auf alle in diesem Kon-
text gestarteten Instanzen von Eclipse, unabhngig davon, auf welchem
Workspace diese operieren. Dies ist nicht immer erwnscht. Benden
sich in einem Workspace ausschlielich C/C++-Projekte, so bentigen
Sie das JDT-Plugin fr Java-Projekte dort wahrscheinlich nicht. Sofern
es von den Plugins untersttzt wird, knnen Sie einzelne Komponenten
aber im Kontext eines Workspace abschalten.
Hierfr bietet die Seite General > Capabilities in den Voreinstellun-
gen diverse Mglichkeiten, deren Ansicht in Abbildung 2-20 dargestellt
wird. Prsentiert ist die Liste Capabilities, die alle Kategorien von Kom-
ponenten aufzeigt. Mit der vorangestellten Auswahlbox legen Sie fest,
ob diese Komponente im Workspace aktiviert sein soll oder nicht. Ent-
fernen Sie beispielsweise das Hkchen vor Team, so wird Eclipse nicht
mehr in der Lage sein, mit CVS oder hnlich eingeordneten Versionie-
rungssystemen umzugehen. Das Hkchen vor Development sollten Sie
jedoch beibehalten, da Sie sonst wichtige Entwicklungskomponenten
ausschalten wrden.
Eine feinkrnigere Auswahl ber die Komponenten erhalten Sie,
wenn Sie den Button Advanced... anklicken. Dann werden die bis-
her angezeigten Komponenten weiter unterteilt. Sie knnten damit
z. B. die CVS-Untersttzung ausschalten, whrend andere Versionie-
rungssysteme noch aktiv bleiben. Es ist auerdem mglich, die Java-
Untersttzung explizit zu deaktivieren, da auch JDT dieses Ausschalt-
Feature untersttzt. Leider nden derzeit nur wenige andere Kompo-
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
2.6 Die Benutzerschnittstelle anpassen 61
Abb. 2-20
Einstellungen der
aktiven Komponenten
inklusive der feineren
Auswahl Advanced
Capabilities Settings
nenten ihren Weg in diese Voreinstellung. So wird auch CDT dort noch
nicht aufgelistet. Das bedeutet, dass dessen Aktivitt auf diese Weise im
Moment noch nicht beeinusst werden kann.
2.6 Die Benutzerschnittstelle anpassen
Zum Abschluss des Kapitels und des ersten Teils des Buchs erfahren Sie
noch, welche Mglichkeiten bestehen, die Oberche an Ihre eigenen
Wnsche anzupassen. Hier werden bedienungsrelevante und auch ein
wenig kosmetische Einstellungen besprochen, mit denen Sie beispiels-
weise auch das Layout der Workbench festlegen. Falls Sie mit der An-
sicht, die Eclipse Ihnen bietet, im Groen und Ganzen zufrieden sind,
knnen Sie diesen Abschnitt auch berspringen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
62 2 Erste Schritte
2.6.1 Werkzeug- und Menleiste anpassen
Die Werkzeugleiste wird immer im oberen Teil des Hauptfensters direkt
unter der Menleiste dargestellt. Von dieser Restriktion einmal abgese-
hen, knnen Sie die Symbole der Leiste nach Belieben anordnen, auch
auf mehrere Zeilen umspannende Weise. Oder Sie lassen sie mit dem
Kontextmeneintrag Hide Toolbar gnzlich verschwinden. Wenn das
einmal passiert ist, knnen Sie dies mit dem Meneintrag Window >
Show Toolbar wieder rckgngig machen.
Aktionen, die ber Men- und Werkzeugleiste aufrufbar sind, hn-
gen von der dargestellten Perspektive ab. Im Allgemeinen ist die Aus-
wahl durch den Anbieter des zur Perspektive zugehrigen Plugins sinn-
voll vorgegeben. Sie kann von Ihnen aber auch modiziert werden.
Hierfr whlen Sie den Meneintrag Window > Customize Perspec-
tive..., woraufhin sich ein neues Fenster ffnet, das aus vier Registern
besteht, die im Folgenden beschrieben werden.
Abb. 2-21
Mit Hilfe der Register
Tool Bar Visibility und
Menu Bar Visibility
knnen die in der
Perspektive
verfgbaren
Kommandos detailliert
eingestellt werden.
Tool Bar Visibility
Die Ansicht des Fensters ist auf der linken Hlfte von Abbildung 2-21
zu sehen. Es besteht aus einer Hierarchie, in die Button-Gruppen und
dazugehrige Kommandos zu sehen sind. Sie geben hier mittels Hk-
chen detailliert an, welche Buttons in der Werkzeugleiste erscheinen.
Grau hinterlegte Eintrge knnen nicht hinzugefgt werden, da derzeit
keine Kommandogruppe aktiv ist, die Kommandos beisteuern wrde.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
2.6 Die Benutzerschnittstelle anpassen 63
Das knnen Sie mit dem Register Command Groups Availability n-
dern. Lassen Sie den Mauszeiger eine kurze Zeit ber einen Eintrag
ruhen, so verrt ein Tooltip Ihnen weitere Details wie z. B. Tastenkr-
zel.
Menu Bar Visibility
Die Ansicht ist auf der rechten Hlfte von Abbildung 2-21 zu sehen.
Die Handhabung der Voreinstellung funktioniert hnlich wie die Ein-
stellungen fr die Werkzeugleiste.
Command Groups Availability
Das Register Command Groups Availability ist in Abbildung 2-22 dar-
gestellt. Darin wird festgelegt, welche Kommandogruppen in der Per-
spektive verfgbar sind. Eine Kommandogruppe umfasst dabei Aktio-
nen, die zu der gleichen Kategorie passen, und kann Aktionen fr das
Hauptmen (mittlere Tabelle) oder fr die Werkzeugleiste (rechte Ta-
belle) bereitstellen.
Abb. 2-22
Das Register
Command Groups
Availability
In der linken Tabelle werden alle verfgbaren Gruppen dargestellt. Se-
lektieren Sie ein Element, so zeigen die anderen beiden Tabellen an, wie
sich die Kommandogruppe manifestiert. Wenn Sie diese Gruppe mit
Hilfe des Hkchens aktivieren, dann werden die Kommandos der Per-
spektive tatschlich hinzugefgt. So htte eine aktivierte Kommando-
gruppe C/C++ Navigation zur Folge, dass die Eintrge Open Element...,
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
64 2 Erste Schritte
Open Type in Hierarchy... und Open Element in Call Hierarchy... im
Workbench-Men Navigate erscheinen und der Button Open Element
in der Werkzeugleiste sichtbar wird.
Shortcut
Das Register Shortcut hat das in Abbildung 2-23 gezeigte Aussehen.
Hier knnen Sie bestimmen, welche Eintrge in den Shortcuts der
Workbench erscheinen. Derzeit existieren drei Menpunkte, die Short-
cuts aufnehmen:
New. Das Men Project > New, um eine neue Ressource anzulegen.
Open Perspective. Das Men Window > Open Perspective, um eine
Perspektive zu ffnen, das auch ber den Button links neben den
bereits geffneten Perspektiven verfgbar ist.
Show View. Das Men Window > Show View, um einen View zu
ffnen. Auch das Men Show View as fast view, das sich standard-
mig in der Workbench links unten in der Statusleiste bendet,
beinhaltet die ausgewhlten Shortcuts.
Abb. 2-23
Das Register Shortcut
Links im Register werden in einem Baum die unterschiedlichen Kate-
gorien prsentiert, in die die Shortcuts thematisch eingeteilt werden
knnen. Das Auswhlen einer Kategorie lsst einzelne Elemente in der
rechten Tabelle erscheinen. Aktivieren Sie dort die Elemente, die als
Shortcuts im gewhlten Untermen fungieren sollen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
2.6 Die Benutzerschnittstelle anpassen 65
2.6.2 Perspektiven verwalten
Neben den bereits vorgefertigten Perspektiven, die durch Plugins dem
Eclipse-Framework hinzugefgt werden, knnen Sie beliebig viele eige-
ne Perspektiven mit eindeutigen Namen erstellen. Hierfr whlen Sie
den Meneintrag Window > Save Perspective As... aus, woraufhin ein
Fenster eine Auswahl aller vorhandenen Perspektiven prsentiert und
zustzlich ein Eingabefeld fr einen Namen anbietet.
Whlen Sie im Fenster einen neuen Namen, so wird eine neue Per- Perspektiven anlegen
oder berschreiben spektive unter diesem Namen angelegt; ansonsten berschreibt man ei-
ne bereits existierende Perspektive. Abgespeichert werden die blichen
Parameter einer Perspektive, d. h. welche Views geffnet sind, welche
Positionen sie in der Workbench einnehmen und ber welche Kom-
mandos verfgt werden kann. Das Symbol einer neuen Perspektive ent-
spricht im brigen dem Symbol der Perspektive, aus der sie hervorgeht.
Mchten Sie eine Perspektive lschen, so kommen Sie mit diesem Perspektiven entfernen
oder wiederherstellen Vorhaben ber die Voreinstellungen auf der Seite General > Perspec-
tives weiter. Klicken Sie die zu lschende Perspektive in der Liste an
und anschlieend auf Delete. Es knnen allerdings nur selbst erstellte
Perspektiven gelscht werden. Wnschen Sie dagegen den Ursprungszu-
stand einer berschriebenen Perspektive wiederherzustellen, so benut-
zen Sie den Button Reset, wenn die Perspektive angewhlt ist.
2.6.3 Tastatursteuerung anpassen
Eclipse lsst sich komplett ber die Tastatur steuern. Dabei sind die
Tastenkrzel frei von Ihnen denierbar. Hierzu bedienen Sie sich in den
globalen Voreinstellungen der Seite General > Keys. Diese ist in Abbil-
dung 2-24 dargestellt.
Den grten Teil der Seite beansprucht eine Liste, in der alle Kom-
mandos (Spalte Command), ihre aktuelle Zuordnung auf der Tastatur
(Spalte Binding), in welchem Kontext sie gltig sind (Spalte When) und
ihre Kategorie (Spalte Category) aufgezeigt werden. Die letzte Spalte
User gibt an, ob Sie an diesem Eintrag nderungen durchgefhrt haben
(durch ein U angezeigt) und wenn ja, ob es sich dabei um einen Konikt
handelt (durch ein C angezeigt). Ein Konikt tritt dann auf, wenn ein
und dasselbe Tastenkrzel im gleichen Kontext zwei unterschiedlichen
Kommandos zugewiesen worden ist.
Die Liste ist insgesamt sehr gro, bietet aber die Mglichkeit, Ein-
trge nach den Spalten zu sortieren. Viel wirkungsvoller ist allerdings
der Filter, der mit Hilfe des ber der Liste bendlichen Texteingabefel-
des angegeben wird und nur diejenigen Elemente anzeigt, die an irgend-
einer Position die eingegebene Zeichenkette enthalten.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
66 2 Erste Schritte
Abb. 2-24
Tastatursteuerung
anpassen. Die
Voreinstellungsseite ist
hier ohne Auswahl der
Kategorie dargestellt.
Wenn Sie einen Eintrag in der Liste anklicken, dann knnen Sie nde-
rungen an diesem Kommando durchfhren. Zunchst erscheint in De-
scription eine kurze Beschreibung des Kommandos. In Binding spezi-
zieren Sie dann das Tastenkrzel, bei dessen Bettigung das selektierte
Kommando ausgefhrt werden soll. Dieses Feld ist kein gewhnliches
Texteingabefeld, sondern beantwortet Ihre Eingaben mit einer Beschrei-
bung der gedrckten Taste.
ber den Filter sehen Sie noch eine Auswahlbox, die den Titel Sche-
me trgt. Darunter verbergen sich vordenierte Zuweisungen von Tas-
taturkrzeln der Kommandos. Diese sind nach Eclipse-Art selbstver-
stndlich nicht in ihrer Anzahl limitiert: Plugins knnen weitere Sche-
mata hinzufgen. So haben Sie als C/C++-Entwickler mindestens die
Auswahl zwischen
Default,
Emacs und
Microsoft Visual Studio.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
2.6 Die Benutzerschnittstelle anpassen 67
Letzteres Schema ist freilich vom C/C++-Plugin hinzugefgt worden
und passt die Tastatursteuerung an eine Microsoft Visual Studio hnli-
che Variante an.
2.6.4 Erscheinungsbild
ZumAbschluss des ersten Teils sollen noch ein paar Worte ber die kos-
metische Flexibilitt von Eclipse verloren werden. Der Ausgangspunkt
ist hier die Voreinstellungsseite General > Appearance. Die mglichen
Optionen sehen Sie in Abbildung 2-25.
Abb. 2-25
Erscheinungsbild
ndern
Im oberen Bereich der Seite knnen Sie das Look and Feel der Work-
bench festlegen und damit letztendlich das Aussehen der Editoren und
Views bis hin zu ihren grundstzlichen Bedienungsweisen beeinussen.
Die Auswahlbox Current presentation hlt hierfr Eintrge aller ver-
fgbaren Skins bereit. Da das Aussehen von Eclipse ber die Jahre ste-
tigen Vernderungen unterworfen war, werden standardmig neben
der bereits bekannten Prsentation lediglich solche Skins angeboten,
die Eclipse ein Aussehen aus frheren Zeiten verleihen.
Wenn Sie die Option Override presentation settings aktivieren,
knnen Sie einige Parameter des ausgewhlten Skins berschreiben.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
68 2 Erste Schritte
Diese betreffen die Positionen der Tabs und der Knpfe fr geffnete
Perspektiven.
Im unteren Bereich knnen Sie unter Current theme ein Themenset
auswhlen und damit Farben und Zeichenstze fr verschiedene Arten
von Ausgaben bestimmen. Im Detail passen Sie diese in der untergeord-
neten Einstellungsseite Color and Fonts an.
Show traditional style tabs. Lsst Sie das Erscheinungsbild der Tabs
auf eine weniger geschwungene Form einstellen.
Enable animations. Das ffnen und Verstecken von Views wird
animiert.
Enable colored labels. Wenn diese Option aktiviert ist, dann er-
scheinen Eintrge in Listen und Bumen farbig, um bestimmte In-
formationen besonders hervorzuheben. Auf welche Weise dies ge-
schieht, stellen Sie ebenfalls in Color and Fonts ein. Gebrauch von
farbigen Eintrgen machen der Search-View, Text-Dekorationen
und viele andere Elemente.
In der Tat knnen sich auch bei diesen Einstellungen Plugins einhn- Skin-Plugins
gen und weitere Prsentationen hinzufgen. Als Beispiel sei hier das
Extended VS Presentation-Plugin erwhnt, das versucht, das Feeling
von Visual C++ auf Eclipse zu bertragen
4
. Dessen Heimatseite ist unter
der Adresse
http://andrei.gmxhome.de/skins/index.html
zu nden. Die Update-Site lautet:
http://andrei.gmxhome.de/eclipse/.
Nachdem die Installation des Plugins erfolgreich abgeschlossen ist, er-
scheint in der Auswahlbox unter Current presentation der neue Eintrag
Extended VS Presentation. Einen Eindruck vom Aussehen knnen Sie
sich anhand von Abbildung 2-26 machen.
2.7 Verzeichnislayout auf dem Datentrger
Dieser Abschnitt mchte Ihnen die Inhalte und Organisationsstruktur
der Verzeichnisse nherbringen, die bei der Entwicklung unter Eclipse
eine Rolle spielen. Idealerweise sollten Ihnen als Anwender von Eclipse
die meisten der hier vorgestellten Details verborgen bleiben und deshalb
zunchst kaum von Interesse sein. In der Realitt kommen Sie jedoch
nicht um ein tieferes Verstndnis herum, denn Eclipse selbst ist eine
4
Ob so etwas wirklich sein muss, ist freilich Geschmackssache.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
2.7 Verzeichnislayout auf dem Datentrger 69
Abb. 2-26
Eclipse mit dem Visual
Studio Theme
uerst komplexe Software, die, obwohl ausgiebig getestet, Ihnen ab
und zu Probleme bereiten wird, zum Beispiel in Form von Abstrzen.
Jegliches Hintergrundwissen ber die systemnahe Struktur kann Ihnen
dabei helfen, zumindest die Ursachen fr ein Problem zu nden oder
dieses in zweiter Instanz zu beheben.
Wichtige Verzeichnisse sind dabei das Programmverzeichnis sowie
die Verzeichnisse der Arbeitsbereiche. Im Folgenden wird auf deren Be-
deutung und deren Handhabung eingegangen.
2.7.1 Programmverzeichnis
Das Programmverzeichnis ist dasjenige, das Sie nach dem Entpacken
des heruntergeladenen Eclipse-Archivs vorliegen haben. Sie wissen be-
reits, dass das Verzeichnis je nach Betriebssystem die Dateien eclipse
oder eclipse.exe beinhaltet. Am Anfang des Buchs wurden diese als
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
70 2 Erste Schritte
Eclipse Program Launcher bezeichnet. Sie wissen auch ber die Datei
eclipse.ini Bescheid, mit deren Hilfe Sie den Start von Eclipse beein-
ussen knnen. Zustzlich verbergen sich noch weitere Dateien oder
Verzeichnisse darin, die fr Sie in Abbildung 2-27, einem Screenshot
vom Windows Explorer, aufgelistet werden.
Abb. 2-27
Die Ansicht des Pro-
grammverzeichnisses
nach dem Entpacken
Verzeichnis: conguration
Hier werden die in Eclipse vorgenommenen Einstellungen in Form von
Kongurationsdateien abgelegt. Bequemerweise sind die Dateien im
ASCII-Format ausgeschrieben, so dass sie in jedem beliebigen Editor
angezeigt oder gegebenenfalls modiziert werden knnen. Allerdings
gelangen in dieses Verzeichnis nur Workspace-bergreifende Einstellun-
gen, wie z. B. die der Netzwerkeinstellungen.
Von besonderer Bedeutung ist die Datei bundles.info, die im Unter-
verzeichnis org.eclipse.equinox.simpleconfigurator abgelegt ist. Darin
werden alle whrend des Programmstarts zu aktivierenden Plugins auf-
gezhlt. Sie sollten an ihr nur im Notfall Hand anlegen, da Sie von
Eclipse oder besser von p2 verwaltet wird.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
2.7 Verzeichnislayout auf dem Datentrger 71
Verzeichnis: dropins
Dieses Verzeichnis gehrt zu den berwachten Verzeichnissen (engl.
watched directory). berwachte Verzeichnisse liest Eclipse beim Start
ein, um nach noch nicht eingerichteten Features und Plugins Ausschau
zu halten, die dann dem System hinzugefgt werden.
Verzeichnis: p2
Das Verzeichnis enthlt die sogenannte Prol-Registry, in der alle aktu-
ellen Installationen aufgelistet sind.
Verzeichnis: plugins
In diesem Verzeichnis benden sich smtliche Plugins. Nahm es vor
Version 3.4 auch manuell hinzugefgte Plugins auf, so ist dies jetzt ei-
gentlich tabu. Das Konzept des dropins-Verzeichnis ist das weitaus e-
xiblere, da es eine saubere Trennung von benutzerhinzugefgten und
standardmig vorhandenen Plugins erlaubt.
Verzeichnis: features
Ein Feature fasst Plugins, die vom selben Anbieter sind und sich zu
einem Werkzeug ergnzen, zu einer in Eclipse verwaltbaren Einheit zu-
sammen. Verwaltbar bedeutet, dass diese installiert oder deinstalliert
werden knnen. Es ist auch mglich, dass Features mit Vorbedingungen
daher kommen, z. B., dass die Prsenz eines anderen Features gefordert
wird. Die Infrastruktur in Form von Ressourcen landet in diesem Ver-
zeichnis. Wie beim plugins-Verzeichnis empehlt es sich ab Eclipse 3.4
nicht, manuell Hand am Inhalt anzulegen.
Verzeichnis: readme
Hier nden Sie Copyright-Informationen oder hnliches von Eclipse
und weiteren Plugins.
Sonstige Dateien
Neben den bereits erwhnten Dateien eclipse.ini und dem Eclipse
Program Launcher nden Sie auf einer Windows-Installation die Da-
tei eclipsec.exe im Programmverzeichnis vor. Diese sollten Sie an-
stelle von eclipse.exe benutzen, wenn Sie Eclipse ber die Windows-
Kommandozeile starten mchten. Damit funktionieren dann auch Da-
teiumleitungen, wenn Eclipse in die Standardausgabe schreibt.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
72 2 Erste Schritte
2.7.2 Workspace
Das Workspace-Verzeichnis ist das Verzeichnis, in dem Eclipse alle be-
nutzerspezischen Daten ablegt. Zum einen sind das natrlich die Pro-
jekte, deren von Ihnen angelegte Struktur dort eins zu eins abgebildet
wird. Zum anderen existiert ein Verzeichnis mit Namen .metadata.
Die Datei .metadata/log enthlt beispielsweise alle geloggten Aus- log
gaben vom Eclipse-Framework. Sollte es schwerwiegende Probleme wie
Abstrze in Eclipse geben, so ist das der wohl am besten geeignete Ort,
um mit der Ursachenforschung zu beginnen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
7
Teil II
Entwicklung mit CDT
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
75
3 Projekte erstellen und bearbeiten
Das erste Kapitel im zweiten Buchabschnitt vermittelt Ihnen, wie Sie Ih-
re Projekte bearbeiten. Die Untersttzung, die Eclipse und CDT Ihnen
dabei gewhren, geht vom einfachen Syntax Highlighting ber eine As-
sistenz beim Finden von Strukturfeldern bis hin zu Refaktorisierungen
und ist damit uerst vielseitig. Nicht zuletzt deshalb ist das Kapitel
auch das umfangreichste.
Bevor im zweiten Abschnitt das Thema Projekterzeugung en dtail
besprochen wird, werden im ersten Abschnitt einige grundstzliche
Konzepte von CDT geklrt, auf denen die meiste Funktionalitt fut.
Diese spielen nicht nur in der Bearbeitungsphase eine Rolle, jedoch
mssen schon vor der Projekterzeugung Entscheidungen getroffen wer-
den, bei denen die Kenntnisse der Konzepte vorteilhaft sind, die z. B.
den Builder betreffen.
Im dritten Abschnitt geht es um allgemeine Eigenschaften von Res-
sourcen. Anschlieend wird ein neues Beispielprojekt angegangen. Dies
ist vom Kongurationsaufwand ein wenig komplexer als das erste Bei-
spiel, da es auf die Boost-Bibliothek [3] aufsetzt, die es fr Windows-
Benutzer auch zu bersetzen gilt. Im fnften Abschnitt folgt die aus-
fhrliche Beschreibung der Hilfestellungen, die Eclipse Ihnen fr das
Bearbeiten der Quelltexte bietet. Der sechste Abschnitt fhrt Sie in den
Dateienvergleich ein, dem insbesondere bei der versionskontrollierten
Verwaltung der Projekte eine groe Bedeutung beigemessen werden
kann.
Danach lernen Sie etwas ber Working-Sets, die ein wenig Ord-
nung im Ressourcengewirr schaffen. Damit Sie whrend der Entwick-
lung keine Aufgaben vergessen, wird anschlieend, d. h. im achten Ab-
schnitt, erlutert, wie Sie die To-do-Liste von Eclipse bedienen. Eine
immer wiederkehrende Aufgabe ist dabei das Refaktorisieren vom exis-
tierenden Programmcode, was im Anschluss das Thema ist.
Im zehnten Abschnitt werden Sie tiefer in die Materie der von CDT
bereitgestellten Parser und Indexer eintauchen, bevor es im elften und
zwlften Abschnitt viel ber die fr die Bearbeitungsphase interessan-
ten Views zu berichten gibt. Der komplexen, dateibergreifenden Suche
widmet sich der 13. und 14. Abschnitt. Abgeschlossen wird das Kapitel
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
76 3 Projekte erstellen und bearbeiten
mit einer kurzen Vorstellung der Internals von Eclipse und CDT: Wo
sind Einstellungen und Metainformationen physisch abgelegt?
3.1 Konzepte von CDT
Bereits im vorherigen Kapitel wurden Sie mit der Organisationsstruktur
und wesentlichen Bedienkonzepten von Eclipse vertraut gemacht. Die-
ser Abschnitt widmet sich vermehrt den Konzepten, die CDT der Platt-
form Eclipse hinzufgt.
3.1.1 Parser
Ein wichtiger Bestandteil von CDT ist der Parser fr Quelltextdateien.
Seine Aufgabe besteht darin, einen Quelltext im Hintergrund durch-
zuscannen, um daraus einen sogenannten Abstract Syntax Tree (kurz
AST) zu erstellen. Ein derartiger AST reprsentiert den kompletten
Quelltext in einer Form, die es Software erlaubt, eine Codeanalyse und
schlielich eine Transformation durchzufhren. Fr Compiler ist das
Erstellen eines AST ein fundamentaler Schritt, denn im Grunde tut ein
Compiler ja nichts anderes, als eine Quellsprache (z. B. C- oder C++-
Quelltext) in eine andere Sprache (z. B. Maschinencode) zu transfor-
mieren und vorher gegebenenfalls zu optimieren. CDT selbst verwendet
den AST zum Syntax Highlighting, fr die Outline-View und um einige
hherwertige Funktionen der automatischen Codeanalyse bereitzustel-
len, zu denen z. B. die Content-Assistenz zhlt.
3.1.2 Indexer
Eine weitere Besonderheit von C/C++ ist die Mglichkeit, dass Funk-
tionen und Variablen extern gebunden werden knnen, d. h. in einer
Quelltextdatei deklariert und referenziert werden, ohne dass eine Asso-
ziation auf ihre eigentliche Denition existiert (engl. external linkage).
Eine automatische Codeanalyse wird demnach zustzlich verkompli-
ziert. Es reicht also nicht, den C/C++-Dialekt und den Prprozessor zu
beherrschen, sondern es mssen ebenso einige Aufgaben eines Linkers
gelst werden.
CDT verwaltet dazu fr jedes Projekt einen Index, der eine Art
Datenbank darstellt. Diese wird mit Referenzen, Denitionen usw. un-
ter Benutzung des bereits erwhnten Parsers gefttert. Aufgaben, wie
z. B. die Suche nach allen Referenzen einer Variablen, werden dadurch
schnell ausgefhrt.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.1 Konzepte von CDT 77
Der Indexer arbeitet auf allen Quelltextdateien und Header-Dateien
des Projekts, die sich in einem Quelltextverzeichnis benden. Der Index
wird aktualisiert, wann immer Sie
das Projekt erstellen oder lschen,
eine Quelltextdatei erstellen oder lschen,
eine Datei importieren,
eine Quelltextdatei modizieren und diese abspeichern oder
den Vorgang manuell starten.
3.1.3 Piktogramme
Damit Sie als Entwickler Informationen auf einen Blick erfassen kn-
nen, bedient sich Eclipse und CDT grascher Symbole. Insbesondere
werden Sie in zahlreichen Programmierhilfestellungen etwa im Out-
line-View auf die Symbole fr strukturgebende Elemente wie Funk-
tionen oder Klassen treffen. Tabelle 3-1 listet alle mglichen Symbole
zusammen mit ihrer programmiersprachlichen Entsprechung auf.
Tab. 3-1
Symbole fr
strukturelle Elemente
Symbol Bedeutung Symbol Bedeutung
Attribut (geschtzt) Makrodenition
Attribut (ffentlich) Methode (geschtzt)
Attribut (privat) Methode (ffentlich)
Aufzhlung Methode (privat)
Aufzhlungselement Namensraum
Funktionsdenition Struktur
Funktionsdeklaration Typdenition
Include-Anweisung Union
Klasse Variable
Daneben existieren Auszeichnungen fr statische deklarierte Elemen-
te oder konstante denierte Variablen, die ber die einzelnen Symbole
gelegt werden.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
78 3 Projekte erstellen und bearbeiten
3.1.4 Kurze Einfhrung in das Build-System
CDT kann Ihnen die Kontrolle ber den Ablauf des bersetzungsvor- Der Build-Prozess kann
durch CDT gesteuert
werden.
gangs abnehmen. Das heit, Sie mssen kein eigenes Makele erstellen
oder aktualisieren und sich nicht mit den teilweise komplizierten Re-
geln innerhalb eines noch viel komplizierteren Makeles plagen; dies
sollte besonders C/C++-Einsteigern gelegen kommen.
Wie bereits zu Beginn des Buchs erwhnt wurde, bringt CDT kei- Anforderung:
Flexibilitt bzgl. der
verwendeten berset-
zungsprogramme
ne eigenen bersetzungsprogramme mit sich. Dies lsst sich damit be-
grnden, dass die Entwicklung eines vollwertigen C/C++-Compilers fr
verschiedene Plattformen, unter denen die erzeugten Programme laufen
sollen, eine uerst aufwendige Aufgabe wre, die von anderen Projek-
ten schon erfolgreich angegangen wird. Anstelle dessen ndet in CDT
das Konzept der Toolchains Verwendung, das CDT ein hohes Ma an
Flexibilitt verleiht.
Eine Toolchain ist eine Sammlung von Tool-Denitionen. Eine Toolchains und Tools
Tool-Denition gibt dabei an, aus welchem Typ Eingabedatei welcher
Typ Ausgabedatei mit welchen Mitteln erzeugt wird. Beispielsweise ent-
hlt die Cygwin-Toolchain eine Denition, mit welchem Aufruf von
Cygwin-Programmen aus einer C-Quelltextdatei eine Objektdatei er-
zeugt wird und mit welchem Aufruf Objektdateien zu einem ausfhr-
baren Programm gebaut werden usw. Im Wesentlichen entspricht also
eine Tool-Denition einer allgemeinen Regel innerhalb eines Makeles.
Nun ist es gang und gbe, fr die verschiedenen Stadien im Ent- Anforderung:
unterschiedliche
Optionen fr
unterschiedliche
bersetzungszwecke
wicklungsprozess unterschiedliche Arten von Executables zu erzeugen.
Zum Testen und zum Debuggen auf Quelltextebene bentigt man im
bersetzungsprodukt mglichst viele Metainformationen, z. B. ber
die Namen der Variablen und zum Code korrespondierende Zeilen-
nummern innerhalb der Quelltextdateien. Auch das starke Optimie-
ren durch einen Compiler behindert das Debuggen von Programmen.
Im Auslieferungszustand hingegen mchte man ein mglichst schnel-
les Programm erzeugen lassen, das ohne jeglichen Ballast auskommt
1
.
Diese unterschiedlichen Zwecke spiegeln sich beim Kommandozeilen-
Compiler blicherweise in den Argumenten, die den bersetzungspro-
grammen bergeben werden, oder in den Umgebungsvariablen wider.
Bei CDT werden diese unterschiedlichen Anforderungen durch soge-
nannte build congurations realisiert.
Mehrere dieser Kongurationen knnen fr ein Projekt erstellt wer- Build-Konguration
den, wobei sich nur eine im aktiven Zustand bendet. Diese wird dann
beim Starten des bersetzungsvorgangs benutzt. Eine build congu-
ration umfasst nicht nur die Parameter der verwendeten Werkzeuge,
1
Wichtig ist es natrlich, dass auch dieses ausgiebig getestet wird, denn h-
here Optimierungsstufen knnen prinzipiell neue Probleme provozieren.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.2 C/C++-Projekte in CDT erzeugen 79
sondern beispielsweise auch Umgebungsvariablen und die verwendete
Toolchain. Tatschlich kann auf diese Weise auch ein bersetzen auf
Basis von ein und demselben Quelltext fr verschiedene Plattformen
realisiert werden.
Eine detaillierte Behandlung des Build-Systems bendet sich im
nchsten Kapitel. Jetzt erfahren Sie erst einmal, wie Sie Ihre Projekte
berhaupt erzeugen.
3.2 C/C++-Projekte in CDT erzeugen
Irgendwann kommt der Punkt, an dem Sie Ihr Projekt technisch mit
Eclipse umsetzen mchten. Der erste Schritt besteht darin, ein neues
Projekt im Workspace anzulegen oder ein bereits vorhandenes Projekt
zu integrieren. Dann werden neue Dateien sowie gegebenenfalls neue
Verzeichnisse erstellt und mit Inhalt versehen.
Ressourcen erzeugt man in Eclipse unter Zuhilfenahme von Wi- Wizards fr neue
Ressourcen zards, die auf den jeweiligen Typ der Ressource zugeschnitten sind. Sie
bringen einen solchen Wizard auf Ihren Bildschirm, indem Sie z. B. auf
Elemente vom Pulldown-Men des New-Buttons zurckgreifen, das bei
geffneter C/C++-Perspektive den in Abbildung 3-1 dargestellten Auf-
bau besitzt. Dieselben Eintrge nden Sie auch im Men File > New
vor oder im Men, das erscheint, wenn Sie die Tasten ALT + SHIFT + N
auf Ihrer Tastatur bettigen.
Abb. 3-1
Das unter dem
New-Button
verborgene
Pulldown-Men in der
C/C++-Perspektive
Die Eintrge in den Pulldown-Mens sind Shortcuts zu den Wizards.
Die Auswahl knnen Sie, wie in Abschnitt 2.6.1 beschrieben, selbst
denieren, wobei sie fr die meisten Perspektiven im Auslieferungszu-
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
80 3 Projekte erstellen und bearbeiten
stand sinnvoll festgelegt ist. Hier wird davon ausgegangen, dass Sie kei-
nerlei nderungen an der Konguration vorgenommen haben.
ImVerlauf des Abschnitts werden Sie die in der Abbildung dargebo-
tenen Eintrge und die damit verknpften Wizards kennenlernen. Zu-
erst erfahren Sie, wie Sie ein C/C++-Projekt anlegen. Dabei sind wich-
tige Entscheidungen zu treffen, die ber die Wahl des Programmier-
dialektes hinausgehen. Anschlieend wird Ihnen gezeigt, wie Sie neue
Dateien und Verzeichnisse anlegen. Zum Schluss werden verschiedene
Mglichkeiten aufgezeigt, wie Sie Ihre bereits vorhandenen Projekte in
Eclipse importieren.
3.2.1 Projekte anlegen
Neue Projekte, egal welcher Art sie sind, werden in Eclipse mit Hil-
fe von New Project-Wizards angelegt, einer speziellen Form der ein-
gangs erwhnten Wizards. Einen berblick ber alle auf der Plattform
vorhandenen New Project-Wizards erhalten Sie mit dem Eintrag Pro-
ject...
2
. In derzeitiger Version bietet CDT Wizards fr C- und C++-
Projekte an, obgleich in Wirklichkeit keinerlei merkliche Unterschiede
in deren Behandlung gemacht werden, bis auf das bei deren Erstellung
Programmiersprachen-spezische Beispielprogramme zur Auswahl ste-
hen. Nach der Auswahl des Eintrages fr C- oder C++-Projekte und der
Besttigung mittels Next erscheint der schon aus Abschnitt 2.2.3 be-
kannte New Project-Wizard, dessen erste Seite erneut in Abbildung 3-2
gezeigt wird. Hier mssen Sie
den Projektnamen (Project name),
den Speicherort (Location),
den Projekttypen (Project types) sowie
die zu verwendende Toolchain (Toolchain)
spezizieren. Ist die Checkbox Use default location aktiviert, dann wird
das Projekt als Verzeichnis im Workspace angelegt. Soll der Pfad al-
lerdings ein anderer sein, deaktivieren Sie die Box und geben Sie den
gewnschten Speicherort an.
Mit der Auswahl eines Projekttyps legen Sie fest, welcher Art das Projekttypen
bersetzungsprodukt ist. Bei der Basisversion von CDT 7.0 haben Sie
die Mglichkeit, sich fr eine von vier Varianten zu entscheiden:
2
Hier und bis zum Schluss des Abschnitts wird auf die Angabe eines voll-
stndigen Menpfades verzichtet. Alle Eintrge benden sich im oben erwhn-
ten Pulldown-Men.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.2 C/C++-Projekte in CDT erzeugen 81
Abb. 3-2
Der Wizard, mit dem
Sie neue C-Projekte
anlegen knnen
eine ausfhrbare Datei (Executable),
eine dynamisch linkbare Bibliothek, d. h. eine DLL-Datei unter
Windows oder eine SO-Datei unter Linux (Shared Library),
eine statisch linkbare Bibliothek (Static Library) oder
ein in einem Makele speziziertes bersetzungsprodukt (Makele
project).
Letzterer Projekttyp Makele project nimmt eine Art Sonderstellung
ein. Fr derartige Projekte kmmern Sie sich selbst um ein Makele,
was insgesamt zwar das exibelste bersetzungsmodell ist, Ihnen aller-
dings auch die Pege des Makeles aufbrdet.
Die Liste von Projekttypen kann durch weitere Plugins ergnzt wer-
den. Das GNU Autotools-Plugin, das in Abschnitt 9.2 ab Seite 374 be-
handelt wird, steuert zum Beispiel eine neue Kategorie GNU Autotools
bei.
Jeder Projekttyp beherbergt mglicherweise mehrere durch einen Projekttyp und
Template auswhlen vorangestellten Kreis in Erscheinung tretende Projektschablonen, die im
CDT-Jargon auch project templates genannt werden. Diese zustzliche
Unterteilung erlaubt es Plugin-Anbietern, Demonstrationen oder Tuto-
rials einzubinden. Die Basis fr einfache Projekte bezeichnet jedoch das
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
82 3 Projekte erstellen und bearbeiten
Template Empty Project. Es sollte bei smtlichen Projekttypen vorhan-
den sein.
Haben Sie den gewnschten Projekttyp ausgewhlt, sollte sich Ihr Werkzeuge auswhlen
Fokus auf die rechte Liste richten, die eine Auswahl von Toolchains
bereithlt. Toolchains denieren die Werkzeuge, mit denen die Dateien
Ihres Projekts bersetzt werden. Die angebotene Auswahlmglichkeit
hngt neben dem selektierten Projekttyp von Ihrer Rechnerplattform
und von den installierten Plugins ab. Sie whlen hier auch lediglich
die zu Beginn aktivierte Toolchain aus. Spter ist es kein Problem, die
tatschlich verwendete Toolchain zu modizieren.
Unter den beiden Listen existiert noch eine Auswahlbox, mit der Sie Inkompatible
Projekttypen und
Toolchains anzeigen
lassen
jene Projekttypen und Toolchains erscheinen lassen, die mit der Platt-
form, auf der Sie entwickeln, nicht kompatibel sind. Verwenden Sie das
Windows-Betriebssystem, so knnten Sie bei aktivierter Auswahlbox
zustzlich den Eintrag Linux GCC auswhlen. Nach getroffener Wahl
legen Sie mit Finish das Projekt an oder Sie nehmen mit Next > zuvor
ein paar weitere Einstellungen vor.
Wenn Sie dabei ein Beispielprojekt wie Hello World ANSI C Pro- Weitere
projektspezische
Angaben
ject gewhlt haben, dann knnen Sie auf dieser oder gegebenenfalls den
folgenden Seiten zustzliche Angaben machen, die die Projekterzeugung
im Speziellen beeinussen. Wie Sie in Abbildung 3-3 sehen, geben Sie
fr das erwhnte, in CDT integrierte Beispielprojekt, den Namen des
Autors, die vom bersetzten Programm angezeigte Meldung usw. an.
Die Daten dieser Felder werden dann beim Anlegen der Quelltexte be-
nutzt. Andere Projektschablonen, die etwa Drittanbieter hinzufgen,
knnen andere Masken verwenden.
Abb. 3-3
Eingabemaske, die
beim Erzeugen des
Hello-World-Projekts
angezeigt wird.
Wenn Sie weiterhin Next > benutzen, gelangen Sie irgendwann auf Konguration
auswhlen die Seite, die in Abbildung 3-4 zu sehen ist und mit dem Titel Select
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.2 C/C++-Projekte in CDT erzeugen 83
Congurations versehen wurde. Hier whlen Sie, welche Konguratio-
nen zu Ihrem Projekt hinzugefgt werden sollen. Die angebotene Aus-
wahl ist abhngig vom vorher gewhlten Projekttyp sowie der aktiven
Toolchain.
Abb. 3-4
Hinzuzufgende
Kongurationen
auswhlen.
Vollstndige Kontrolle
ber die Optionen
erhalten Sie mit
Advanced settings....
Wenn Ihnen die bisher vorzunehmenden Einstellungen noch nicht ge- Weitere Einstellungen
nug erscheinen, haben Sie schlielich mit dem Button Advanced Set-
tings... die Mglichkeit, alle Eigenschaften des Projekts zu modizieren.
Das Fenster ist das gleiche, das erscheint, wenn Sie von einem bereits
vorhandenen C/C++-Projekt die Projekteigenschaften hervorrufen. Im
Verlaufe dieses und der nchsten beiden Kapitel werden alle dort ange-
botenen Optionen im Detail besprochen.
3.2.2 Dateien erzeugen
Nachdem Sie ein Projekt erstellt haben, mchten Sie es sicher mit Ihren
Quelltextdateien fttern. Neben demPulldown-Men des New-Buttons
knnen Sie auch ber das Men File > New > Other... den allgemeinen
Dialog zur Ressourcenerzeugung ffnen und dort in der Kategorie C
oder C++ einen Dateiressourcentyp selektieren. Je nach Auswahl wer-
den nach einem Klick auf Next > voneinander abweichende Seiten pr-
sentiert. Im Folgenden sind die fr die C/C++-Entwicklung relevanten
Wizards beschrieben.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
84 3 Projekte erstellen und bearbeiten
C/C++-spezische Dateiressourcentypen
CDT erweitert die Eclipse-Plattform um die folgenden Wizards, mit de-
nen sich C/C++-spezische Dateien erzeugen lassen.
Source File. Hiermit legen Sie eine normale Quelltextdatei an. Sie n-
den eine Ansicht in Abbildung 3-5. In Source Folder wird der Ord-
ner eingetragen, in dem Sie die neue Datei abgelegen mchten. Die
Vorgabe entspricht jenem Verzeichnis, das Sie vor dem ffnen des
Wizards im Navigations-View selektiert haben. Den Dateinamen
geben Sie in Source File an. Wenn dieser mit keinem fr C/C++-
Quelltexte gebruchlichen Sufx endet, werden Sie mit einer Warn-
meldung darauf aufmerksam gemacht. Darunter knnen Sie noch
eine Schablone angeben, die bei der Erzeugung der Datei genutzt
wird. Der Button Congure... erlaubt Ihnen nicht nur den Einblick,
sondern auch die Gelegenheit, nderungen daran vorzunehmen.
Abb. 3-5
Quelltextdatei
hinzufgen
Header File. Hiermit legen Sie eine Header-Datei an. Die Ansicht des
Wizards ist mit obiger im Wesentlichen identisch, nur dass andere
Templates angeboten werden.
File from Template. Dieser Wizard hat die in Abbildung 3-6 dargestell-
te Form. Mit ihm legen Sie eine beliebige Textdatei an. Durch die
Aktivierung der Option Use template knnen Sie eine Schablone
wie oben angeben. Dabei wird die dargebotene Auswahl dem ein-
gegebenen Namen der Datei angepasst. Wenn Sie also der Datei die
Endung .c geben, dann sind nur C-spezische Muster whlbar. Bei
einem Klick auf den Button Advanced >> wird Ihnen zustzlich
die Mglichkeit angeboten, eine Linked Resource zu erstellen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.2 C/C++-Projekte in CDT erzeugen 85
Abb. 3-6
Eine Datei aus einem
Template erzeugen
Klassen fr C++-Projekte erzeugen
C++-Entwicklern steht neben den bisher besprochenen Sorten der Typ Eine neue Klasse
denieren Class zur Verfgung. Hiermit erzeugen Sie eine neue C++-Klasse, was
Ihnen etwas Tipparbeit ersparen kann. Das Benutzerinterface unter-
scheidet sich von Obigem zu diesem Zweck und ndet fr Sie in Abbil-
dung 3-7 seine Darstellung.
Wie bei den anderen Dateitypen, geben Sie in Source Folder das Verzeichnis und
Namensraum Verzeichnis an, in dem die Klasse aufgenommen wird. Mit dem Kon-
trollkstchen Namespace knnen Sie den Namensraum der Klasse spe-
zizieren und dabei auf bereits von CDT entdeckte zurckgreifen oder
einen neuen denieren.
In Class Name geben Sie den Namen der zu erzeugenden Klasse an. Klassenname whlen
Dieser sollte im Namensraumnoch nicht vorkommen, ansonsten macht
Sie eine Fehlermeldung im oberen Teil des Fensters schon beim Tippen
darauf aufmerksam. Ebenso erscheint eine Warnung, wenn vom Klas-
sennamen abgeraten wird, weil dieser z. B. mit einem Kleinbuchstaben
beginnt.
In die Liste Base Class knnen Sie die Namen derjenigen Klassen Basisklassen
spezizieren hinzufgen, von denen die neue Klasse Attribute und Methoden erben
soll. Verwaltet wird die Liste durch die vier Buttons, die rechts ange-
bracht sind. Mit einem Klick auf Add... ffnet sich ein ntzlicher Dia-
log, mit dessen Hilfe Sie komfortabel die Basisklassen whlen. Er ist in
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
86 3 Projekte erstellen und bearbeiten
Abb. 3-7
Eine neue Klasse
hinzufgen
Abbildung 3-8 dargestellt. Alle von CDT gefundenen Klassen werden
dabei in der Liste Matching elements angezeigt. Ein Klick auf eine Klas-
se lsst ihren qualizierten, also vollstndigen, Namen sowie den Pfad
zur Datei im Feld darunter erscheinen. Ein Doppelklick fgt die Klasse
dann genauso wie ein Klick auf den Button Add zum Set der Basisklas-
sen hinzu, vorausgesetzt Sie besttigen den Dialog am Schluss positiv.
Ist es zu mhsam, die richtige Klasse zu nden, dann kann die Auswahl
mit den oben angebrachten Filteroptionen eingeschrnkt werden.
Zurck zum ursprnglichen Dialog, also Abbildung 3-7. Die Ab- Modier der
Basisklassen leitung von Klassen knnen Sie durch Schlsselwrter (Modikatoren;
engl. modier) auf verschiedene Weise gestalten, z. B., wie die ffentli-
chen oder geschtzten Elemente der Basisklasse weitervererbt werden.
In der Liste der Basisklassen benden sich deswegen neben der Spalte
von Namen noch Spalten fr Access und Virtual. Klicken Sie auf die
jeweiligen Zellen, um diese abzundern.
Klassen verfgen oftmals ber Konstruktoren und Destruktoren. Stubs
Damit Sie sich auch diese Tipparbeit sparen, lassen Sie den entspre-
chenden Rahmencode von CDT automatisch erzeugen, indem Sie die
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.2 C/C++-Projekte in CDT erzeugen 87
Abb. 3-8
Eine neue Basisklasse
hinzufgen
entsprechenden Kontrollkstchen aktivieren. Vorangestellte Schlssel-
wrter passen Sie wie oben durch Klicks auf die Zellen an.
Wohin gelangt letztendlich die neue Klasse? Die Frage beantwortet Dateinamen
der untere Teil des Fensters. Nach Konventionen werden zwei Datei-
en erzeugt, die Header-Datei, in der die Klassendenition geschrieben
wird, und die Quelltextdatei, in der die Denition der Methoden landet.
CDT kann dabei zum einen die Klasse in neue Dateien unterbringen,
ganz nach der aus Java bekannten Philosophie, dass ffentliche Klassen
immer in eigene Dateien zu speichern sind. Zum anderen knnen Sie
die Klassendenition an bestehende Dateien anhngen lassen.
Sobald Sie Finish klicken, erzeugt CDT den Quellcode fr die Klas- Klassen erzeugen
se gem Ihren Wnschen und fgt ihn Ihrem Projekt hinzu. Existiert
die Header-Datei bereits, dann wird die Klassendenition nicht einfach
an die Datei angehngt, sondern sinnvoll eingefgt. Wenn die Header-
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
88 3 Projekte erstellen und bearbeiten
Datei z. B. von Include-Guards
3
umschlossen ist, dann gelangt die De-
nition in den geschtzten Bereich.
Wenn Sie mit dem Stil, in dem die Klassen erzeugt werden, z. B. die Stil individualisieren
Art der Kommentare ber den Klassenattributen, nicht ganz zufrieden
sind, dann knnen Sie diesen auch modizieren. Beschrieben wird dies
genauer in Abschnitt 3.15.2 ab Seite 174.
Weitere Dateiressourcentypen
Das Eclipse-Framework bietet auch noch zwei sehr allgemeine Ressour-
centypen an, die im bersichtsfenster in der Kategorie General zu n-
den sind:
File. Sie erstellen eine gewhnliche Textdatei, wozu neue Dateien zh-
len aber auch verknpfte. Verknpfte Dateien erzeugen Sie, indem
Sie weitere Optionen mit dem Button Advanced >> sichtbar schal-
ten. Der Dialog entspricht dem von Abbildung 3-6 auf Seite 85, nur
dass hier keine Schablonen angegeben werden knnen.
Untitled Text File. Sie werden nicht mit weiteren Formularen belstigt.
Stattdessen wird eine namenlose Datei im Editor geffnet. Einen
Namen und ein Zielverzeichnis knnen Sie solchen Dateien mit dem
Meneintrag Project > Save As... geben.
3.2.3 Verzeichnisse hinzufgen
Genauso einfach, wie Sie neue Dateien anlegen, knnen Sie auch ein
Verzeichnis zu Ihrem Projekt hinzufgen. Verzeichnisse tragen dazu bei,
dass Sie in der Organisation des Projekts den berblick behalten. Dabei
haben Sie die Wahl zwischen zwei Typen.
Folder
Der Wizard Folder wird durch die Plattform bereitgestellt und erlaubt
Ihnen, ein simples Verzeichnis in Ihrem Projekt anzulegen. Der Wizard
hat die gleiche Form wie der fr einfache Dateien. Demzufolge ist es
auch hier mglich, eine Verknpfung zu einem auerhalb des Projekts
3
Diese stellen sicher, dass der Quelltext einer Include-Datei nur ein einziges
Mal einbezogen wird. Gewhnlich bedient man sich eines Makros, das nur
in der Header-Datei Verwendung ndet. Mit Hilfe von bedingter bersetzung
wird der eigentliche Inhalt der Datei nur einbezogen, wenn dieses Makro noch
nicht deniert ist. Es wird allerdings dann auch im positiven Pfad deniert.
Im brigen werden standardmig solche Include-Guards automatisch beim
Anlegen einer neuen Header-Datei eingefgt.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.2 C/C++-Projekte in CDT erzeugen 89
bendlichen Verzeichnis zu erstellen, was fr die Einbindung von nicht
als Bibliothek vorliegenden Modulen ntzlich sein knnte.
Source Folder
Der Source Folder wird durch CDT neu zur Plattform hinzugefgt. Der
Wizard ist in Abbildung 3-9 zu sehen und erlaubt die Angabe des Pro-
jekts und des Namens, wobei hier ein zum Projektverzeichnis relativer
Pfad speziziert werden kann und somit auch tiefere Hierarchien mg-
lich sind.
Abb. 3-9
Ein Quell-
textverzeichnis
erzeugen
Was unterscheidet den Source Folder von normalen Verzeichnissen?
Abgesehen davon, dass ein C das Piktogramm verschnert, das Sie
ber den Sinn und Zweck des Ordners in Kenntnis setzt, wird ein Sour-
ce Folder gleich in die Liste der Quellverzeichnisse aufgenommen. Das
ist sowohl fr den Indexer als auch fr das Build-System von Interes-
se. Nur die Dateien, die sich in als Quellverzeichnis gekennzeichneten
Ordnern benden, werden indiziert und vom automatischen berset-
zungssystem kompiliert.
Mit der einzigen Checkbox im Wizard bezwecken Sie schlielich,
dass das neu anzulegende Verzeichnis in die Ausschlusslter der an-
deren Quellverzeichnisse aufgenommen wird, damit keine mehrfache
Betrachtung des Verzeichnisses stattndet. Eine genauere Beschreibung
der Quellverzeichnisse und des Ausschlusslters nden Sie in Ab-
schnitt 4.3.2 ab Seite 187 vor.
3.2.4 Vorhandene Projekte importieren
Wahrscheinlich haben Sie bereits einige C- oder C++-Projekte und
mchten diese nun in Ihrer neuen Eclipse-CDT-Installation einpegen.
Das Importieren vorhandener Projekte kann dabei auf mehreren Wegen
erfolgen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
90 3 Projekte erstellen und bearbeiten
ber die Importfunktion von CDT
CDT 7.0 stellt eine sehr einfache Mglichkeit bereit, vorhandene Pro-
jekte, die auf Make basieren, in den Workspace zu integrieren. Es han-
delt sich hierbei um den Wizard Makele Project with Existing Code
fr neue Projekte, den Sie z. B. in demPopdown-Men des Buttons New
C/C++ Project aufrufen knnen, das in Abbildung 2-4 auf Seite 35 ge-
zeigt wurde. Er ist standardmig innerhalb der C++-Perspektive auch
ber das Men File > New schnell erreichbar, da der Wizard als Short-
cut deniert ist.
Abb. 3-10
Wizard, ber den
bereits existierende
Projekte sehr einfach
zum Workspace
hinzugefgt werden
knnen
Im Wizard spezizieren Sie bei Project Name den Namen des Projekts,
so wie er in Eclipse erscheinen soll, und bei Existing Code Location
das Verzeichnis, in dem sich das Projekt bendet. Des Weiteren kn-
nen Sie die Programmiersprache bestimmen, die im Projekt verwendet
wird, und die Toolchain, aus der ein paar Einstellungen fr den Indexer
bernommen werden.
Das soll jetzt einmal exemplarisch fr den Quellcode des Open-
Source-Projekts ffmpeg geschehen, auf das wir noch an anderer Stelle
zurckgreifen werden. Laden Sie die Quellen von ffmpeg in ein Ver-
zeichnis Ihrer Wahl herunter. Die ffmpeg-Homepage ist zur Druckle-
gung des Buchs unter der URL http://www.ffmpeg.org zu nden. Die
URL der Version 0.6, auf der diese Beschreibung basiert, lautet
http://www.ffmpeg.org/releases/ffmpeg-0.6.tar.bz2
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.2 C/C++-Projekte in CDT erzeugen 91
Entpacken Sie anschieend das Archiv, was z. B. in einer Shell mit
tar -xjf ffmpeg-0.6.tar.bz2
bewerkstelligt werden kann, sofern Sie sich im Verzeichnis der Datei be-
nden.
4
ffnen Sie in Eclipse anschlieend den Wizard und geben Sie
als Projekt Name den Eintrag ffmpeg-0.6 und in Existing Code Loca-
tion das Verzeichnis an, das nach dem Entpacken entstanden ist. Best-
tigen Sie diese Angaben mit Finish. Sie sollten anschlieend das Projekt
ffmpeg-0.6 im View C/C++ Projects sehen knnen. Es bleibt noch an-
zumerken, dass das Projekt zwar im Workspace von Eclipse erscheint,
der eigentliche Inhalt des Projekts sich jedoch weiterhin auf das Origi-
nalverzeichnis bezieht, das nach dem Entpacken entstanden ist. Das ist
sinnvoll, wenn Sie zwar Ihre bereits bestehenden Projekte unter Eclipse
bearbeiten mchten, sich aber nicht 100%ig auf Eclipse festlegen wol-
len.
ber die Importfunktion von Eclipse
Sie knnen beliebige Dateien ber die von Eclipse bereitgestellte Im-
portfunktion zum Workspace hinzufgen. Hierfr benutzen Sie den
Menpunkt File > Import..., um einen Wizard auszusuchen. Abbil-
dung 3-11 zeigt eine mgliche Auswahl an.
Sie haben die Mglichkeit, je nach Auswahl, verschiedene Dinge in
Eclipse zu importieren. Soll dies ein vollstndiges Projekt sein, knnen
folgende Wizards benutzt werden:
Filesystem: Die Quellen benden sich auf einem eingebundenen
Datentrger des Rechners. Sie mssen zuvor ein in Eclipse neues
C/C++-Projekt anlegen, in das die Quellen importiert werden.
Archive File: Die Quellen benden sich innerhalb eines Dateiar-
chivs. Untersttzt werden von Eclipse 3.6 und CDT 7.0 die For-
mate Zip und die Tar/GZIP-Kombo. Vor dem Importieren mssen
Sie jedoch ein neues C/C++-Projekt anlegen, da die Dateien in ein
bereits vorhandenes Projekte abgelegt werden.
Existing Projects into Workspace: Die Quellen benden sich bereits
in einem Eclipse-Projekt oder Workspace.
Mittels New-Project-Wizard
Sie erstellen ein neues Projekt wie gehabt mit dem New Project-Wizard,
geben als Location jedoch wie in Abbildung 3-12 am Beispiel von Free-
4
Cygwin-Benutzer denken dabei daran, dass sie mit /cygdrive/ Zugriff auf
alle Windows-Laufwerke erhalten knnen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
92 3 Projekte erstellen und bearbeiten
Abb. 3-11
Importieren
civ
5
das Wurzelverzeichnis des zu importierenden Projekts an. Das Pro-
jekt erscheint dann unter dem gewhlten Namen (Project name), wird
allerdings nicht in den Workspace kopiert, sondern nur referenziert.
Konvertieren
Ist Ihr Projekt bereits im Eclipse-Workspace, allerdings noch kein er-
kennbares C/C++-Projekt, so knnen Sie mit Hilfe von Convert to a
C/C++ Make Project mit dem New Project-Wizard dieses Projekt in
ein solches umwandeln. Bei Auswahl des Wizards erscheint lediglich
ein Fenster mit einer Liste. Sie enthlt alle im Workspace verfgbaren
Projekte, die keinerlei C/C++-Assoziation besitzen.
Import mittels Versionskontrolle
Last, but not least knnen Sie Ihr Projekt auch ber die CVS-Unter-
sttzung von Eclipse oder ber die mit Hilfe eines Plugins realisier-
te SVN-Untersttzung in den Workspace importieren. Aufgrund der
groen Bedeutung dieses Themas im Entwickleralltag ist der Versions-
5
http://www.freeciv.org/
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.2 C/C++-Projekte in CDT erzeugen 93
Abb. 3-12
Das Hinzufgen eines
bereits existierenden
Nicht-Eclipse-Projekts
kann durch Angabe
des Pfades geschehen.
Hier am Beispiel von
Freeciv, dessen
Quellen sich auf
meinem System unter
D:\Source\freeciv
benden.
verwaltung ein eigenes Kapitel gewidmet, nmlich Kapitel 6, in dem
auch auf das Importieren bzw. Auschecken im Detail eingegangen wird.
3.2.5 Projekt entfernen
Mchten Sie ein Projekt entfernen, dann klicken Sie es an und whlen
im Men Edit > Delete an. Es erscheint der in Abbildung 3-13 gezeigte
Dialog, in demSie zumeinen das Vorhaben besttigen und zumanderen
mit der Option Delete project contents on disk entscheiden knnen, ob
der Inhalt des Projekts auch vom Datentrger gelscht werden soll.
Abb. 3-13
Dialog, um das
Lschen eines Projekts
zu besttigen
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
94 3 Projekte erstellen und bearbeiten
3.2.6 Projekttyp ndern
Um generell den Typ eines Projekts zu ndern, knnen Sie das Projekt
lschen, wie im vorherigen Abschnitt beschrieben wurde, wobei der ei-
gentliche Inhalt auf dem Datentrger belassen wird. Die Option Delete
project contents on disk muss also unbedingt ausgeschaltet sein. An-
schlieend erstellen Sie ein neues Projekt vom gewnschten Typ und
geben als Ort des Projekts den Pfad des gelschten Projekts an.
3.3 Eigenschaften von Ressourcen
Die Eigenschaften von Ressourcen beherbergen neben Informationen
ber die gewhlte Ressource an sich verschiedene Einstellungsmglich-
keiten, von denen insbesondere Projekte eine Vielzahl anzubieten ha-
ben. Alle Eigenschaften einer Ressource knnen auf den Bildschirm ge-
bracht werden, indem Sie in einem Navigations-View im Kontextmen
ber der Ressource den Eintrag Properties auswhlen. Die Projektei-
genschaften knnen Sie auch mit dem Meneintrag Project > Proper-
ties fr das Projekt der aktuell in Bearbeitung bendlichen Ressource
aufrufen.
Der Dialog hat den gleichen Aufbau wie das globale Voreinstel-
lungsfenster: Links benden sich die mglicherweise hierarchisch ange-
ordneten Kategorien, rechts die Seite des ausgewhlten Elementes. Als
Beispiel ist der Dialog fr zwei Ressourcen, die im letzten Kapitel fr
das Projekt bonacci angelegt wurden, in Abbildung 3-14 dargestellt.
Darin ist erkennbar, dass sich die Kategorieauswahl voneinander unter-
scheidet. Sie hngt von der Art der Ressource ab.
Die Seite Resource, die in beiden Ausschnitten gerade aktiv ist, wer-
den Sie hingegen bei allen Ressourcentypen wiedernden, auch wenn
sich die gezeigte von Ressourcentyp zu Ressourcentyp unterscheidet.
Unabhngig vom Typ enthlt Sie allerdings ganz allgemeine Angaben
ber die fragliche Ressource. Erkennbar sind neben den Informationen
wie dem Eclipse-Pfad (Path), dem Ressourcentyp (Type), dem Speicher-
ort auf dem Dateisystem (Location) und dem Datum der letzten nde-
rung auch einige Optionen, die im Folgenden beschrieben werden.
Im Kasten Text le encoding legen Sie die fr Textdateien verwen- Kodierung der
Textdateien dete Kodierung (engl. encoding) fest. Entweder geben Sie eine explizite
Kodierung an, oder diese Einstellung wird von der Container-Ressource
geerbt, die entweder der bergeordnete Ordner, das Projekt oder, bei
Projektressourcen, die globale Einstellung ist. Meistens wird es nicht
ntig sein, diese Einstellung zu ndern. Sinnvoll ist diese Option jedoch
beispielsweise beim Erstellen von Sprachkatalogen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.3 Eigenschaften von Ressourcen 95
Abb. 3-14
Eigenschaften fr
Projekt- und
Dateiressourcen Der Kasten New text le line delimiter steht ausschlielich fr Projek-
tressourcen zur Verfgung und erlaubt die explizite Angabe des Zeilen-
begrenzers (engl. line delimiter) fr neue Textdateien. Dabei werden alle Zeilenbegrenzer fr
neue Textdateien verbreiteten Varianten untersttzt: Unix (LF), Windows (CRLF) sowie
Mac OS 9 (CR). Ebenso kann diese Einstellung vom Container geerbt
werden. Wohlgemerkt hat sie nur auf neue Textdateien einen Einuss.
Mchten Sie hingegen bei bereits existierenden Textdateien den Zeilen-
begrenzer ndern, so kann dies mit Hilfe des Menpunkt File > Convert
Line Delimiters To geschehen.
Ordner und Dateien besitzen zustzlich noch Attribute, die in ihren Attribute
Merkmalen im Wesentlichen mit denen bereinstimmen, die bei Datei-
systemen Verwendung nden.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
96 3 Projekte erstellen und bearbeiten
Read only: Ist dieses Attribut aktiviert, kann die Ressource nur ge-
lesen werden. Beim Versuch, die Datei innerhalb von Eclipse zu
verndern, erscheint ein Dialog, so wie er in Abbildung 3-15 zu se-
hen ist. Dieser mchte Sie erstens auf den Schreibschutz hinweisen
und stellt Ihnen zweitens zur Wahl, diesen aufzuheben.
Abb. 3-15
Dialog beim Versuch,
eine schreibgeschtzte
Datei zu modizieren
Archive: Dieses Attribut hilft beim Anlegen von Sicherheitskopi-
en. Es wird bei jedem Schreiben der Datei gesetzt. Fertigt man ein
Backup der Datei an, so wird dieses Attribut gelscht. Solange das
Attribut also gelscht ist, wurde keine nderung an der Datei vor-
genommen und sie muss bei erneutem Backup evtl. nicht neu gesi-
chert werden. Das Vorhandensein eines solches Attributs hat histo-
rische Grnde.
Derived: Die Ressource wurde aus anderen Ressourcen erzeugt.
Kandidaten fr solche Ressourcen sind beispielsweise alle aus den
Quelltextdateien hervorgehenden Objektdateien oder die daraus
generierten ausfhrbaren Programme. Leider wird dieses Attribut
in derzeitiger Version bei Objektdateien nicht explizit gesetzt, was
wahrscheinlich damit zusammenhngt, dass die Ressource von ei-
nem externen Programm (dem Compiler oder Linker) erzeugt wird.
Von grerem Interesse sind die Seiten, die der Dialog noch zu bieten Weitere Seiten zu
gegebener Zeit hat. Mehr ber deren Zweck erfahren Sie zu gegebener Zeit im weiteren
Verlauf des Buchs.
3.4 Projekt: Dirscanner
Haben wir uns beim ersten Beispiel ein wenig mit Mathematik beschf-
tigt, so wollen wir im nchsten Beispiel den Fokus mehr auf die Proble-
me des Programmieralltags ausrichten. Das neue Programm, das wir
schreiben mchten, um mit CDT weiter vertraut zu werden, soll nichts
weiter tun, als ein zu bergebendes Verzeichnis rekursiv durchzuscan-
nen, um die summierte Gre der darin enthaltenen Dateien auf der
Konsole auszugeben.
Praktisch gesehen gibt es viele Mglichkeiten, diese Aufgabe zu l-
sen. Wir benutzen hierfr die Boost-Library, weil
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.4 Projekt: Dirscanner 97
ANSI-C oder neuere ISO-Standards eine Funktion zum Einlesen
von Verzeichnissen schlicht und einfach vermissen lassen (die be-
kannte opendir()-Funktion wird in POSIX deniert),
die Boost-Bibliothek zusehends an Bedeutung im C++-Alltag ge-
winnen wird, da sie plattformbergreifend wichtige Features wie
z. B. Dateioperationen, Netzwerkverbindungen und Datenstruktu-
ren bereitstellt, vergleichbar mit Suns Klassenbibliothek fr Java,
Teile von ihr deshalb in den neuen C++0x-Standard
6
eingepegt
werden und das allein schon ein gewichtiger Grund ist, sich mit
Boost auseinanderzusetzen.
Der folgende Unterabschnitt schafft zunchst die Voraussetzung: Hier
wird erlutert, wie Sie die Boost-Bibliothek auf Ihrem Rechner instal-
lieren.
3.4.1 Boost installieren
Boost ist mit dem Grundgedanken der Portabilitt entwickelt worden.
Die Installation ist deshalb auf den verschiedensten Systemen mglich,
darunter benden sich sowohl Linux als auch Windows. Dennoch ist
der zu betreibende Aufwand unterschiedlich hoch, deshalb wird die
Einrichtung von Boost auf dem System separat betrachtet.
Unter Linux einrichten
Linux-Benutzer haben es hier im Gegensatz zu ihren Windows-
Kameraden sehr viel einfacher, ndet sich Boost doch in den meisten
Distributionen wieder. Sie mssen das Paketverwaltungssystem ledig-
lich dazu bringen, die neuste Version von Boost und die dazu passen-
den Entwicklerpakete einzurichten. Debian-Nutzer erledigen dies z. B.,
indem Sie
aptitude install libboost-dev libboost-filesystem-dev
in einer Root-Shell eingeben.
Unter Windows einrichten
Zwar wird Ihnen Boost im Paketmanager von Cygwin zur Installation
angeboten, doch ist die offerierte Version unter Umstnden stark ver-
altet; so war es zumindest bei Drucklegung des Buchs der Fall. ber-
dies ntzt Ihnen das fertige Paket herzlich wenig, wenn Sie sich fr
6
Das x steht dabei fr eine beliebige Zahl. Die inofzielle Bezeichnung wies
darauf hin, dass man noch vor dem Jahre 2010 mit einer endgltigen Version
publizieren wollte. Dies konnte jedoch nicht eingehalten werden.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
98 3 Projekte erstellen und bearbeiten
den MinGW-Weg entschieden haben. Aus diesem Grund ist es nicht die
schlechteste Idee, Boost selbst zu bersetzen. Dies soll im Folgenden
beschrieben werden.
Abb. 3-16
Die Heimatseite von
Boost
Laden Sie das Boost-Archiv ber die Heimatseite http://www.boost.org
herunter, von der ein kleiner Ausschnitt in Abbildung 3-16 zu sehen ist.
Der Weg sollte Sie ber die Seite http://www.boost.org/users/download/
schlielich zu einer SourceForge-Seite fhren. Die hier aufgefhrte Be-
schreibung basiert auf der Version 1.43.0 von Boost, die am 6. Mai
2010 verffentlicht wurde.
Wechseln Sie in eine Shell, lokalisieren Sie die heruntergeladene Da-
tei und geben Sie
tar -xjf boost
_
1
_
43
_
0.tar.bz2
ein, wenn sich die Datei im aktuellen Verzeichnis bendet. Wechseln Sie
anschlieend in das neu entstandene Verzeichnis. Dort geben Sie
./bootstrap.sh
ein, wenn Sie Cygwin benutzen. Anschlieend wird Boost mittels der
Eingabe von
./bjam install
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.4 Projekt: Dirscanner 99
bersetzt und bei Erfolg under demCygwin-Pfad /usr/local/ installiert.
Eventuell angezeigte Warnungen bezglich Python knnen Sie demRat-
schlag folgend tatschlich ignorieren. Lehnen Sie sich zurck, besser
noch, nehmen Sie eine Tasse Kaffee oder Tee zu sich, denn je nach ver-
fgbarer Rechenpower kann der eben angestoene Vorgang eine Weile
dauern.
3.4.2 Dirscanner entwickeln
Fr das Einlesen von Dateien und Verzeichnissen ist bei Boost die
Filesystem-Bibliothek verantwortlich. Die zugehrige Header-Datei
lautet boost/filesystem.hpp.
Die Bibliothek deniert die Klasse path, deren Instanzen einen kom- Pfade reprsentieren
pletten Pfad eines Dateisystemeintrages reprsentieren. ber eine sta-
tus()-Methode knnen wir Details zum Pfad abfragen, z. B. ob es sich
dabei um ein Verzeichnis handelt, eine regulre Datei usw.
Mit Hilfe des Iterators directory
_
iterator iterieren wir ber die- ber
Verzeichniseintrge
iterieren
jenigen Eintrge, die sich in dem bei der Konstruktion bergebenen
Verzeichnis benden. Konkret wird der Iterator auf den ersten Ein-
trag im bergebenen Verzeichnis initialisiert. Zugriff auf das aktuel-
le path-Objekt ermglicht uns die Methode path(), whrend die Me-
thode status() es uns ohne Umwege erlaubt, den Status des Eintrages
in Erfahrung zu bringen. Die Iterator-Klasse berldt den Inkrement-
operator ++. Dieser setzt den Iterator auf den nchsten Verzeich-
niseintrag oder auf den End-Iterator, falls kein weiterer Eintrag exis-
tiert. Jenen End-Iterator erzeugen wir ber den Default-Konstruktor.
Da auch der Gleichheitsoperator berladen wird, knnen wir ein Ver-
zeichnis in einer gewhnlichen for-Schleife einlesen, ohne dass der Code
dabei allzu unbersichtlich erscheint.
Erstellen Sie zuerst ein neues C++-Projekt mit Namen dirscanner.
Als Projekttyp sollte Executable > Empty Project ausgewhlt werden.
In Voraussicht spterer potenzieller Erweiterungen wollen wir ein Ver-
zeichnis durch Instanzen einer Klasse Directory reprsentieren. Die ein-
zige Methode soll getSize() heien: Sie gibt die Gre der Dateien in-
klusive der Gre der Unterverzeichnisse als Summe zurck. Den Pfad Da wir mit dem
Verzeichnisnamen
nicht viel arbeiten, ist
der gewhlte Typ
sicher genug.
merken wir uns durch ein privates Attribut name, fr dessen Typ wir
C-blich einen char-Zeiger auswhlen. Der bersicht halber implemen-
tieren wir die Klasse in einer eigenen Datei directory.cpp. Legen Sie im
neuen Projekt zunchst die Beschreibung der Klasse in der Header-Da-
tei directory.hpp an. Sie sollte folgenden Inhalt haben:
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
100 3 Projekte erstellen und bearbeiten
Listing 3.1
directory.hpp
#ifndef DIRECTORY
_
HPP
_
#define DIRECTORY
_
HPP
_
class Directory
{
const char
*
name;
public:
Directory(const char
*
name);
long getSize();
};
#endif /
*
DIRECTORY
_
HPP
_
*
/
Erstellen Sie anschlieend die Datei directory.cpp, die in etwa so aus-
sehen knnte:
Listing 3.2
directory.cpp
#include <iostream>
#include <boost/filesystem.hpp>
#include "directory.hpp"
namespace fs = boost::filesystem;
Directory :: Directory(const char
*
name)
{
this->name = name;
}
long Directory :: getSize()
{
long size = 0;
fs::directory
_
iterator end
_
itr;
for (fs::directory
_
iterator itr(name);
itr != end
_
itr;
itr++)
{
if (!fs::is
_
symlink(itr->status()))
{
if (fs::is
_
directory(itr->status()))
{
Directory sub(itr->path().string().c
_
str());
size += sub.getSize();
} else
{
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.4 Projekt: Dirscanner 101
size += file
_
size(itr->path());
}
}
}
return size;
}
Die Programmhauptfunktion main() legen Sie unter einer Datei mit Na-
men dirscanner.cpp ab. Sie knnte bei Ihnen folgendermaen aussehen:
Listing 3.3
dirscanner.cpp
#include <iostream>
#include "directory.hpp"
int main(int argc, char
**
argv)
{
if (argc < 2) return -1;
Directory directory(argv[1]);
/
*
Use getSize() method to determine the space occupied by files
*
and directory within the directory.
*
/
std::cout << directory.getSize() << std::endl;
return 0;
}
Versuchen Sie jetzt, das Programm mit Klick auf den Build-Button
zu bersetzen. Es ist sehr wahrscheinlich, dass dies nicht von Erfolg
gekrnt ist, denn es mssen noch die einzubindenden Bibliotheken an-
gegeben werden. Es kann aber auch sein, dass der Compiler bereits die
Header-Dateien von Boost nicht nden kann, was Ihnen durch Fehler-
Markierungen an den Include-Anweisungen deutlich gemacht wird. Fr
beide Flle werden notwendige nderungen in den Properties im Pro-
jekt vorgenommen, die Sie zum Vorschein bringen, indem Sie die rechte
Maustaste ber dem Projekt bettigen und anschlieend Properties aus-
whlen.
Da die Boost-Klassen, die wir bentigen, auf weitere Bibliotheken
zugreifen
7
, mssen auf jeden Fall die Bibliotheken bekannt gemacht
werden. Hierzu gehen Sie auf der Seite C/C++ Build > Settings ins Regis-
ter Tool Settings, wo alle Einstellungen vorgenommen werden, die die
whrend eines bersetzungsprozesses verwendeten Programme betref-
fen. Fr den hier zu erfllenden Zweck ist die Kategorie C++ Linker >
7
Im Gegensatz hierzu setzen weniger systemnahe Boost-Klassen lediglich das
Einbinden von Header-Dateien voraus.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
102 3 Projekte erstellen und bearbeiten
Libraries interessant, wobei dem Namen weitere Zustze vorangestellt
sein knnen. Fgen Sie dort in der Liste Libraries (-l), wie in Abbil-
dung 3-17 gezeigt, die Bibliotheken boost
_
filesystem und boost
_
system
hinzu, die zumindest fr die Version 1.43.0 von Boost korrekt sind.
Abb. 3-17
Bibliothekseinstellungen
Um bei Problemen mit nicht gefundenen Header-Dateien die Suchpfade Suchpfad fr
Header-Dateien
angeben
anzupassen, whlen Sie auf der Seite C/C++ General > Paths and Sym-
bols die Registerkarte Includes aus. Diese Ansicht ist in Abbildung 3-18
zu sehen. Auf der Seite wird Ihnen eine Liste angezeigt, in der sich alle
eingebundenen Include-Pfade benden, die idealerweise schon aus ei-
nigen Eintrgen besteht, nmlich aus denen, die bereits durch CDT er-
mittelt wurden. Fr gewhnlich sollte sich dort auch bereits ein Eintrag
benden, unter dem die Boost-Dateien abgelegt sind. Wenn Sie z. B.
obige Installationsanweisung befolgt haben, dann ist der Eintrag der
richtige Kandidat, der in irgendeiner Form /usr/local/include enthlt.
Sie ergnzen die Liste, indem Sie auf Add klicken, woraufhin sich
ein Dialog ffnet, der in Abbildung 3-19 zu sehen ist. Whlen Sie den
korrekten Pfad aus, indem Sie File system... anwhlen. Anschlieend
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.4 Projekt: Dirscanner 103
Abb. 3-18
Include-Einstellungen
haken Sie die Optionen Add to all congurations und Add to all lan-
guages ab, bevor Sie die Eingabe mit Ok besttigen.
Es knnte sich ebenso als notwendig herausstellen, die Suchpfade Suchpfad fr
Bibliotheken
hinzufgen
fr Bibliotheken anzupassen. Es empehlt sich, die Einstellungen auf
der Registerseite Library Paths auf der Seite Path and Symbols vorzu-
nehmen. Sie fgen hier die Pfade hnlich wie bei der eben besproche-
nen Vorgehensweise hinzu. Erfolgte die Installation von Boost manuell,
so sollte der Pfad /usr/local/lib lauten, wobei Cygwin-Benutzer wie-
Abb. 3-19
Neuen Include-Pfad
hinzufgen
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
104 3 Projekte erstellen und bearbeiten
der darauf zu achten haben, dass dem Pfad das Wurzelverzeichnis der
Cygwin-Installation vorangestellt werden muss.
3.5 Quelltexte bearbeiten
Den Groteil der Zeit, den die Entwicklung Ihres C/C++-Projekts bean-
sprucht, werden Sie wohl im Texteditor mit dem Bearbeiten oder Veri-
zieren der Quelltexte verbringen. Fr eine moderne Entwicklungsum-
gebung ist es deshalb von groer Wichtigkeit, den Programmierer bei
dieser Arbeit tatkrftig zu untersttzen. Damit die folgende Beschrei-
bung nicht eine allzu trockene und theoretische Vorstellung wird, wer-
den wir die durch Eclipse und CDT bereitgestellten Funktionalitten
sowohl anhand des discanner-Beispiels als auch mit Hilfe der Quellen
des ffmpeg-Projekts prsentieren. Beide Projekte sollten schon in Ihrem
Workspace erscheinen, wobei ersteres in Abschnitt 3.4 entwickelt und
letzteres bereits in Abschnitt 3.2.4 importiert wurde. Ist dies bei Ihnen
noch nicht der Fall, so sollten Sie es jetzt schleunigst nachholen.
3.5.1 Grundstzlicher Aufbau eines Editorfeldes
Abbildung 3-20 zeigt einen Editor, an dem die wichtigsten Bereiche
beschriftet sind. Auf der linken Seite bendet sich die Editorleiste, in
der zustzliche, zeilenspezische Informationen fr die aktuelle Ansicht
dargestellt werden. Das knnen Fehlermarkierungen, aber auch Zeilen-
Breakpoints sein. Das in der Abbildung gezeigte Kontextmen dieser
Leiste, das Sie auch ber den Tastatur-Shortcut STRG+F10 zu Gesicht
bekommen, gibt Ihnen weitere Optionen. Unterhalb wie rechts vom
Textfeld benden sich die Scrollbalken. Dem vertikalen Scrollbalken ist
zudem eine bersichtsleiste beigestellt, in der Eclipse diverse Informa-
tionen fr den gesamten Text prsentiert.
3.5.2 Textpassagen markieren
Texte knnen Sie wie gewhnlich mit Hilfe der Maus oder in Kombina-
tion von Pfeiltasten und SHIFT direkt mit der Tastatur markieren. Seit
CDT 6.0 wird auch der sogenannte Blockauswahlmodus untersttzt,
bei dem die Auswahl nicht mehr zeichenbasiert zusammenhngend fest-
gelegt werden muss, sondern durch ein Rechteck gekennzeichnet wird,
wie man es von einem Zeichenprogramm kennt. Der Modus kann mit
dem Tastenkrzel ALT+SHIFT+A oder ber den Button der Werkzeug-
leiste Toggle Block Mode Selection ein- oder ausgeschaltet werden.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.5 Quelltexte bearbeiten 105
Abb. 3-20
Aufbau des
Quelltexteditors
3.5.3 Quelltext formatieren
Ein vernnftig formatierter Quelltext trgt wesentlich zur Lesbarkeit
und damit zur Wartbarkeit von Code bei. Oder knnen Sie auf Anhieb
sagen, was die folgenden Codezeilen bewirken?
for (
int i=0;i<99;
i++){sum+=
x[i]
;}
Auf diese Weise sieht es doch gleich ganz anders aus:
for (int i=0;i<99;i++)
{
sum+=x[i];
}
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
106 3 Projekte erstellen und bearbeiten
Das ist sicherlich ein extremes Beispiel. Sie mssen die Passagen nicht
von Hand ndern, denn CDT kann Ihnen diese Aufgabe abnehmen und
den gesamten Quelltext oder Teile davon nach den Vorgaben des gerade
angewhlten Code-Style abnehmen. Aufrufen lsst sich die Funktion
beispielsweise ber das Kontextmen des Texteditors durch den Eintrag
Source > Format.
Umformatierungen bei Team-Projekten nur in Maen
Arbeiten Sie bei einem greren Projekt mit, so sollten Sie es im All-
gemeinen jedoch vermeiden, groe Umformatierungsaktionen zu star-
ten. Versionsverwaltungssysteme wie Subversion oder CVS agieren auf
Textebene, ein erfolgreiches Zusammenfhren von nderungen wird da-
durch erschwert. Zudem kann durch Vergleich zweier Versionen nicht
mehr leicht festgestellt werden, wo die Unterschiede liegen. Das bedeu-
tet freilich nicht, dass jeder Entwickler sein eigenes Sppchen kochen
sollte. Vielmehr gilt es, sich auf einen Stil zu einigen, der dann mglichst
konsequent von allen Entwicklern eingehalten wird.
Den benutzten Code-Style knnen Sie in den Voreinstellungen zu
Eclipse bzw. CDT auf der Seite C/C++ > Code Style whlen (Abbil-
dung 3-21). Zunchst haben Sie die Auswahl zwischen den folgenden
bereits in CDT eingebauten Varianten:
K&R, dem Stil der C-Ernder Kernighan und Ritchie,
BSD/Allman,
GNU, der von GNU bevorzugte Stil,
Whitesmiths.
Daneben knnen Sie mit Import andere bereits vorgefertigte Stile im-
portieren. In der darunter dargestellten Vorschau machen Sie sich ber
den aktuell selektierten Stil ein Bild.
Trifft keiner der Stile Ihren Geschmack oder existieren fr ein Pro-
jekt einfach andere Regeln, so knnen Sie mit Hilfe von New... einen
eigenen Stil denieren. Wenn Sie einen Code-Style bearbeiten mchten,
klicken Sie auf Edit..., woraufhin sich ein neues Fenster ffnet, wie in
Abbildung 3-22 dargestellt. Dort whlen Sie aus allerhand Optionen Ih-
ren Lieblingsstil aus. Es besteht auch die Mglichkeit, Ihren Code-Style
als XML-Datei zu exportieren, um ihn an andere Projektmitglieder zu
verteilen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.5 Quelltexte bearbeiten 107
Abb. 3-21
Zuweisen eines
Code-Styles
3.5.4 Editierhilfen
Entwickler, das Tippen leid sind, werden sich ber die zahlreichen Edi-
tierhilfen freuen, die der Quelltexteditor zu bieten hat. Hierzu gehren
z. B. die automatische Klammernergnzung und die Smart Indention,
die bewirkt, dass neue Zeilen je nach der Vorgngerzeile sinnvoll ein-
gerckt werden. Editierhilfen respektieren, soweit es Sinn ergibt, den
ausgewhlten Code-Style. Manchen Entwicklern mgen derlei Hilfen
allerdings etwas zu smart sein, deshalb knnen sie auf der Voreinstel-
lungsseite C/C++ > Editor > Typing, die in Abbildung 3-23 zu sehen ist,
auch abgestellt werden.
3.5.5 Prsentation der Quelltexte
Wie Sie schon beim Eingeben Ihres ersten Quelltextes bemerkt haben, Syntaktisches
Highlighting untersttzt der C/C++-Texteditor Syntax Highlighting, das schon lan-
ge zur Standardfunktionalitt von Texteditoren gehrt. Damit werden
spezielle C/C++-Schlsselwrter wie z. B. while, for oder Kommentare
mit ausgesuchten Farben oder Stilen versehen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
108 3 Projekte erstellen und bearbeiten
Abb. 3-22
Genaue Denition
eines Code-Styles
Neben dieser einfachen Art, Quelltexte zu prsentieren, bietet der Tex- Semantisches
Highlighting teditor auch das weitaus komplexere Semantic Highlighting an. Durch
dieses werden nicht nur bestimmte Schlsselwrter im Quelltext ver-
deutlicht. Vielmehr knnen alle Elemente in Abhngigkeit zum Kon-
text besonders ausgezeichnet werden, was Ihnen noch mehr Aufschluss
ber die Funktion des Elementes geben sollte. Beispielsweise sind Va-
riablen, je nachdem welchem Gltigkeitsbereich sie unterliegen, ganz
unterschiedlich hervorgehoben. So frbt CDT Klassenattribute in der
Standardkonguration blau. Sind sie statisch deklariert, werden sie
dann zudem kursiv ausgeschrieben. Ebenso werden Referenzen auf Ma-
kros anders als Funktionsaufrufe dargestellt, umein weiteres Beispiel zu
nennen. Viele andere Unterscheidungen sind mglich, wobei die fr das
Highlighting verwendeten Farben und Stile in den Voreinstellungen auf
der Seite C/C++ > Editor > Syntax Coloring angeben werden.
Andere Formen der Textdarstellung lassen sich direkt ber die Leerrume anzeigen
Werkzeugleiste beeinussen. Bei aktivierter Funktion Show white cha-
racters werden alle Leerrume (Leerzeichen, Tabulatoren oder
Zeilenumbrche) durch andere sichtbare Zeichen dargestellt.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.5 Quelltexte bearbeiten 109
Abb. 3-23
Voreinstellungen fr
Editierhilfen
Aktivieren Sie die Darstellungsoption Show source of selected element Anzeige auf ein
Element ein-
grenzen
only , um den Texteditor in die segmentierte Ansicht umzuschalten.
Dadurch wird im Texteditor nur noch der Textbereich angezeigt, ber
dem sich die aktuell in Bearbeitung bendliche Funktion, Methode,
Klassendenition oder hnliches erstreckt. Wenn Sie anschlieend wie-
der den Rest der Datei sehen mchten, so mssen Sie die Option deak-
tivieren. Die Funktion des Outline-Views wird auf diese Weise jedoch
nicht ausgehebelt. An die anderen Textbereiche gelangen Sie demnach
auch, wenn Sie auf ein Element des Outline-Views doppelklicken.
Des Weiteren ist die Funktion Toggle Mark Occurrences oft Elemente im Texteditor
farbig unterlegen hilfreich. Sie ist ber die Werkzeugleiste oder ber das Tastenkrzel
ALT+SHIFT+O einschaltbar. Aktiviert man die genannte Darstellungs-
form, dann werden Elemente, die semantisch genauso verwendet wer-
den wie das Element, ber dem der Cursor steht, im gesamten Quell-
text farbig hinterlegt. Der bersicht halber sind die Markierungen auch
in der rechten Leiste als Annotationen abgebildet und knnen so per
Mausklick zgig angesprungen werden. Eine Konguration des Verhal-
tens dieser Hilfe erlaubt die Voreinstellungsseite C/C++ > Editor > Mark
Occurrences.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
110 3 Projekte erstellen und bearbeiten
Damit Sie den berblick ber sehr lange Quelltexte nicht verlieren, Falten von
strukturellen
Elementen
kann Ihnen der Quelltexteditor strukturell zusammenhngende Text-
abschnitte wie Funktionen, Strukturen, Kommentare oder auf feinerer
Ebene Kontrollussanweisungen wie for oder while gruppieren. Nach
Wunsch lassen Sie diese Gruppen dann, wie in Abbildung 3-24 gezeigt,
in einer Textfalte verschwinden, indem die entsprechende Markierung
auf der linken Seite des Texteditors benutzt wird. Auf diese Weise lsst
es sich auch bei groen Quelltexten recht gut navigieren. Einblick ber
den weggefalteten Text erhalten Sie in einem Popup, indem Sie den
Mauszeiger ber das Faltsymbol bewegen. Die Funktion des Faltens
ist standardmig zwar deaktiviert, kann aber ber das Kontextmen
der Editorleiste mit Hilfe des Eintrages Folding > Enable Folding ein-
geschaltet werden. Welche Textbereiche dabei gruppiert werden, beein-
ussen Sie in den globalen Einstellungen auf der Seite C/C++ > Editor
> Folding.
Abb. 3-24
Quelltext mit
gefalteten
Textpassagen
Die aktuelle Zeilennummer, in der sich der Cursor bendet, ist in der Zeilennummer
anzeigen Statusleiste der Workbench ablesbar. Sie knnen die Zeilennummer je-
doch auch vor jeder Zeile in der Editorliste anzeigen lassen, indem Sie
dafr sorgen, dass sich im Kontextmen vor dem Eintrag Show Line
Numbers genau wie in Abbildung 3-25 ein Hkchen bendet.
Nicht zu vergessen ist die Option Quick Diff, die standardmig nderungsanzeige
eingeschaltet ist. Damit erkennen Sie auf einen Blick, welche Art nde-
rungen Sie seit dem letzten Speichern im Quelltext durchgefhrt haben.
Dazu wird jeder neuen oder modizierten Zeile eine farbige Markie-
rung in der Editorleiste vorangestellt, gegebenenfalls erscheint der Hin-
weis unter der Zeilennummernanzeige. Gelschte Zeilen werden zwi-
schen den verbliebenen Zeilen durch einen kleinen schwarzen Strich
reprsentiert. Beispielsweise sind in der letzten Abbildung, kurz bevor
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.5 Quelltexte bearbeiten 111
Abb. 3-25
Der Editor mit
aktivierter
Zeilennummer- und
nderungsanzeige
die Screenshots entstanden, solche Modikationen im oberen Teil des
Dokuments unternommen worden. Die Details des beraus ntzlichen
Hilfsmittels
8
lassen sich auf der Voreinstellungsseite General > Editors
> Text Editors > Quick Diff anpassen. Die Funktion der nderungsan-
zeige kann im brigen durch Plugins abgewandelt werden. Gebrauch
davon machen etwa die CVS- und Subversion-Plugins, die hier weite-
re Annotationsinformationen unterbringen. Diese werden in Kapitel 6
behandelt.
3.5.6 Annotationen
Die Eclipse-Plattform stellt neben der nderungsanzeige eine hilfrei-
che Funktion bereit, die es erlaubt, Zeilen im Quelltext mit weiteren
Angaben zu versehen, den Annotationen (engl. annotations) oder auch
Markierungen (engl. marker). Sie dienen zum einen dem Festhalten von
Informationen, zum anderen knnen sie die Aufmerksamkeit des Be-
nutzers auf sich ziehen. Im Quelltexteditor nden Sie sie an diversen
Positionen wieder:
In der linken Editorleiste benden sich alle Annotationen der sicht-
baren Zeile. Sie werden durch ein dem Annotationstyp entspre-
chendes Symbol reprsentiert. Gegebenenfalls knnen Sie mit Hil-
8
Hierzu zhlen neben den verwendeten Farben auch die Referenzart, die zur
Bestimmung der nderung herangezogen wird.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
112 3 Projekte erstellen und bearbeiten
fe des Kontextmens ber den Annotationen spezische Aktionen
hervorrufen.
Im Quelltext selbst werden Sie durch verschiedene Stile reprsen-
tiert.
In der sich neben dem vertikalen Scrollbalken bendlichen ber-
sichtsleiste sind sie in vereinfachter Form, aber fr den gesamten
Quelltext verteilt angezeigt.
Ein wichtiges Exemplar aus dem Pool mglicher Annotationen haben
Sie bereits kennengelernt: das Fehlersymbol, das auf einen berset-
zungsfehler an entsprechender Stelle hinweist und im Quelltext durch
eine rote, wellenfrmige Unterstreichung hervorgehoben wird. Anno-
tationen knnen aber nicht nur von Eclipse selbst eingefgt werden,
sondern auch von Ihnen.
Eine globale Ansicht der Annotationen bzw. Marker ist durch spe-
zialisierte Views gegeben. Einblicke in alle besagten Compiler-Feh-
lermeldungen erhalten Sie z. B. ber den Problems-View. Tabelle 3-2
listet weitere Symbole und deren Bedeutung auf. Des Weiteren enthlt
sie den Namen des Views, in denen diese Marker zusammengefasst be-
trachtet werden knnen, sowie einen Verweis auf den Abschnitt, der
mehr Details ber die Marker enthlt.
Tab. 3-2
Die verschiedenen
Marker und ihre
Bedeutung
Grak Bedeutung View Behandelt in
Fehler Problems Abschnitt 4.7.5 ab Seite 220
Warnung Problems Abschnitt 4.7.5 ab Seite 220
Indexer-Warnung
Aufgabe Tasks Abschnitt 3.8 ab Seite 136
Lesezeichen Bookmarks Abschnitt 3.5.15 ab Seite 127
Breakpoint Breakpoints Abschnitt 5.5 ab Seite 267
Suchergebnisse Search Abschnitt 3.14 ab Seite 167
Die in der Tabelle aufgefhrten Views sind, falls noch nicht geffnet,
ber den angegebenen Namen Window > Show View zu ffnen. Dane-
ben existiert noch der Markers-View, der mit Hilfe des Meneintrages
Window > Show View > Other > Markers hervorgebracht wird und in
Abbildung 3-26 zu sehen ist. Hiermit knnen Sie einen berblick ber
alle im Workspace bendlichen Annotationen erhalten. Dabei werden
die Marker entsprechend ihres Typs gruppiert.
Die Liste von Annotationen, die sich in einer Gruppe benden,
kann mitunter sehr lang werden zu lang, um sinnvoll damit arbei-
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.5 Quelltexte bearbeiten 113
Abb. 3-26
Der Markers-View stellt
alle Annotationen dar,
die fr den Workspace
vorliegen.
ten zu knnen. Standardmig zeigt Eclipse deshalb nur die ersten ein-
hundert Eintrge einer Gruppe an (und macht eine verkrzte Anzei-
ge kenntlich). Selbstverstndlich lsst sich dieses Limit verndern oder
komplett abstellen. Die zugehrige Einstellungen nden Sie in den Pr-
ferenzen zum View wieder, die Sie bequem ber den Meneintrag Prefe-
rences vom Pulldown-Men des Views zum Vorschein bringen knnen.
3.5.7 Code-Analyse
Die mit CDT 7.0 eingefhrte Komponente Codan ist ein Framework Codan
fr die statische Code-Analyse, das allerdings nur dann verfgbar wird,
wenn das entspechende Feature
9
installiert ist. Die Code-Analyse geht
im Allgemeinen einen Schritt weiter als das berprfen vom Quelltext
auf syntaktische Richtigkeit. Die Grundidee besteht darin, Eigenschaf-
ten der Ausfhrung des Programms zu ermitteln, ohne jedoch das Pro-
gramm selbst auszufhren. Hierzu wird das Programm ausgehend vom
Quelltext in verschiedene Reprsentationen transformiert, auf denen
dann die Eigenschaften bestimmt werden. Diese Form von Analyse ist
z. B. ein integraler Bestandteil von Compilern, die die Ausfhrungsei-
genschaften heranziehen, um optimierten Code auszugeben. Natrlich
lassen sich auch so mgliche Schwachstellen im Programm aufspren,
indem man die Struktur des Programms auf Fehlermuster untersucht.
Genau das ist das Ziel, das mit Codan verfolgt werden soll.
Codan ist, wie bereits erwhnt, ein Framework und stellt damit
Entwicklern von Plugins Grundelemente bereit, um ihre Tests zu imple-
mentieren. Eine Reihe von Tests sind glcklicherweise schon fest einge-
9
Der Name Codan ist ein Akronym fr Code-Analyse.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
114 3 Projekte erstellen und bearbeiten
baut, so dass das Feature auch fr die Benutzer der Plattform, also fr
Sie, interessant ist, ohne weitere Plugins installieren zu mssen.
Eigentlich brauchen Sie gar nicht viel tun, um in den Genuss die- Codan anwenden
ser Fhigkeiten zu kommen. Sobald das Plugin installiert wurde, ist es
auch schon aktiv und berprft ihre Eingaben on the y. Geben Sie
doch einfach einmal folgenden Codeschnipsel in einem beliebigen C-
Quelltext ein:
int b=0;
if (b=0)
{
/
*
Do something
*
/
}
Neben der Zeile mit dem if -Konstrukt erscheint ein Warnsymbol, ohne
dass ein Compiler ins Spiel kommt und obwohl an der Syntax nichts zu
bemngeln ist. Wenn Sie mit der Maus darber fahren, wird der Text
Possible assignment in condition sichtbar, was in diesem Zusammen-
hang bedeutet, dass hier eine Zuweisung innerhalb einer Bedingung
stattndet, die wahrscheinlich so nicht beabsichtigt ist. Hchstwahr-
scheinlich wurde ein Test auf Gleichheit gemeint, der in C und C++
durch zwei Gleichheitszeichen angezeigt wird. Sobald Sie ein zweites
Gleichheitszeichen hinzufgen (oder alternativ ein weiteres Klammern-
paar um die Zuweisung setzen; laut Konvention eine Art Bekrftigung,
dass Sie wissen, was Sie tun
10
), verschwindet die Warnung.
Abb. 3-27
Ein Problem mit
Quick-Fixes lsen
10
In diesem Beispiel wre der ganze Ausfhrungsblock allerdings nicht er-
reichbar.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.5 Quelltexte bearbeiten 115
Das ist noch nicht alles. Zwar geht in diesem Fall die Lsung des Pro- Fehler mit Quick-Fixes
beheben belms noch schnell von der Hand, bei anderen Fllen muss das aber
nicht immer der Fall sein. Denkbar wre auch, dass eine Lsung nicht
offensichtlich ist. Codan wartet zu diesem Zwecke mit einer Quick-
Fix-Funktion auf, die Sie erreichen, indem Sie ber der Stelle des Feh-
lers im Kontextmen den Eintrag Quick Fix whlen oder alternativ die
Tastenkombination STRG+1 bettigen. CDT unterbreitet Ihnen darauf
mgliche nderungen, wie es in Abbildung 3-27 zu sehen ist.
Natrlich bringt Codan noch eine Reihe anderer Problemerkenner
mit sich, von denen einige in Tabelle 3-3 aufgezhlt werden. Im b-
rigen knnen Sie Meldungen gezielt ein- oder ausschalten und diverse
Parameter einstellen, u.a. auch den Schweregrad eines Problems (engl.
severity), der das verwendeten Symbol vorgibt. Benutzen Sie hierfr
die Voreinstellerseite Code Analysis, die sowohl ber den Meneintrag
Window > Preferences als auch in den Projekteigenschaften auf der Sei-
te C/C++ General zu nden ist. Ersteres erlaubt Ihnen eine globale Mo-
difkation, letztere eine projektspezische.
Tab. 3-3
In Codan eingebauter
Problemerkenner
Name
Assignment in condition
Statement has no effect
Class has a virtual method and non-virtual destructor
Catching by reference is recommended
Suggested parenthesis around expression
No return value
Unused return value
No return
Name convention for function
3.5.8 Navigation
Wenn Sie im Quelltext herumschauen, ist es sehr hilfreich, wenn Sie
die Ansicht des Editors ohne Aufwand auf jene zurcksetzen knnen,
die bei der letzten nderung aktiv war. Hierfr klicken Sie einfach auf
den Button Last Edit Location oder bettigen STRG+Q auf der Tasta-
tur. Springen Sie fter in andere Quelltexte, so wird dies hnlich wie
bei einem Webbrowser in einer Historie vermerkt. Zugriff darauf er-
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
116 3 Projekte erstellen und bearbeiten
halten Sie ber die beiden Buttons Back und Forward der Toolbar oder
ALT+LINKS bzw. ALT+RECHTS mittels Tastatur.
Neben diesen einfachen Navigationsmglichkeiten knnen Sie auch Navigationen entlang
der Annotationen die Annotationen nutzen, um interessante Stellen im Quelltext zu n-
den. Zum einen ist da natrlich die Mglichkeit, eine Annotation in ih-
rem View doppelzuklicken. Zum anderen knnen Sie die Buttons Next
Annotation und Previous Annotation oder STRG+. bzw. STRG+,
nutzen, um den Annotationen nacheinander zu folgen. Mit Hilfe der
Dropdown-Mens der Buttons legen Sie durch Hkchen fest, welche
Annotationen dabei Beachtung nden sollten.
11
Ntzlich fr C/C++-Programmierer ist die Mglichkeit, schnell zwi- Zwischen Quelltext-
und Header-Datei
umschalten
schen Quelltext- und Header-Dateien umzuschalten. Diese Funktion ru-
fen Sie im Men Toggle Source/Header oder mit der Tastenkombinati-
on STRG+TAB herbei. Anzumerken ist noch, dass nur zwischen passen-
den Gegenstcken umgeschaltet wird, also zwischen Dateien mit der
Endung .c und .h, zwischen .cpp und .hpp sowie zwischen .cxx und
.hxx.
Steht der Cursor hinter einer Klammer, so zeigt der C/C++-Quell- Die passende
Gegenklammer nden texteditor automatisch die korrespondierende Gegenklammer an, in-
dem diese durch ein Viereck umzeichnet wird. Wollen Sie zustz-
lich zu dieser Stelle springen, so bedienen Sie sich des Meneintrages
Navigate > Go to > Matching Bracket oder der Tastenkombination
STRG+SHIFT+P.
Im selben Untermen nden Sie zustzlich die Eintrge Next Mem-
ber und Previous Member. Der Begriff Member hat hierbei nur wenig
mit den Begriffen Member-Funktionen oder Member-Variablen gemein,
wie sie in der objektorientierten Programmierung Verwendung nden.
Vielmehr bezieht er sich auf die Strukturelemente des gesamten Quell-
textes, die durch den Parser von CDT extrahiert und z. B. im Outline-
Viewangezeigt werden. Dazu zhlen Funktionen oder Variablen ebenso
wie Makro-Denitionen oder Include-Anweisungen.
3.5.9 Content-Assistenz
Eine der interessantesten Funktionen von Eclipse berhaupt ist die so-
genannte Content-Assistenz, die der tglichen Programmierarbeit gleich
zwei Besonderheiten hinzufgt. Als Erstes knnen endlich auch vergess-
liche Entwickler, also solche, die sich ungern an Variablen-, Funktions-
und Klassennamen usw. erinnern, ziemlich ssig und ohne umstnd-
liches Durchforsten von Quellen oder Entwicklerdokumentation ihrer
11
In dieser Liste mssen sich jedoch nicht alle Ihnen bekannten Annotations-
typen benden. Ob ein Typ dort erscheint, entscheidet der Plugin-Anbieter.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.5 Quelltexte bearbeiten 117
liebsten Beschftigung frnen. Als Zweites ersetzt sie fast Orakel-artig
die Tipparbeit bei diesen Konstrukten.
Die Content-Assistenz kann mit Hilfe des Menpunktes Edit >
Content Assist aufgerufen werden. Alternativ benutzen Sie auch die
Tastenkombination STRG+SPACE, was wahrscheinlich die vorzuziehen-
de Variante ist, wenn der Tippuss nicht allzu sehr beeindrchtigt wer-
den soll.
Die Content-Assistenz versucht dann, den Text vor dem Cur- Vom Parser abgeleitete
Vorschlge sor sinnvoll zu komplettieren. Dabei wird alles Mgliche in Betracht
gezogen: Funktionsnamen, Feldnamen von Strukturen, Makros und
Include-Dateien, um nur einige Elemente der Parser-abgeleiteten Vor-
schlge zu nennen, die CDT unter den Begriff Parsing-based Proposals
zusammenfasst. Weitere Klassen von Vorschlgen sind:
Help Proposals. Umfassen Vorschlge aus den Hilfedateien von
Plugin-Anbietern. Fr eine Installation, die nur CDT umfasst, ist
das nicht interessant.
Template Proposals. Umfassen Vorschlge fr Textschablonen.
Textschablonen sind kleinere, vordenierte Textblcke, die im
Quelltext eingefgt werden knnen.
Word Proposals. Umfassen Vorschlge, die sich aus den Wrtern
aller Kommentare und Zeichenketten zusammensetzen. Sie werden
auch nur fr solche strukturellen Einheiten angeboten.
Existieren im aktuellen Kontext mehrere sinnvolle Mglichkeiten, die
Zeichenkette zu ergnzen, dann ffnet sich ein kleines Popup auf Hhe
des Cursors, das Ihnen die denkbaren Varianten prsentiert.
12
Stan-
dardmig werden dabei die Parser-abgeleiteten Eintrge sowie Vor-
schlge fr Hilfekommentare und Textschablonen angezeigt. Sie kn-
nen jedoch durch erneutes Drcken von STRG+SPACE durch die ver-
schiedenen Arten von Vorschlgen wandern. Zudem lsst sich das Ver-
halten in den globalen Einstellungen auf der Seite C/C++ > Editor >
Content Assist > Advanced modizieren.
Um ein Gefhl fr die Ntzlichkeit dieser Funktion zu bekommen,
ffnen Sie beispielsweise die fibonacci.c-Datei aus Kapitel 2. Fgen Sie
ihr eine neue Zeile vor der return-Anweisung hinzu. Geben Sie dann
einfach den Buchstaben p ein. Anschlieend verwenden Sie die Tasten-
kombination STRG+SPACE. Daraufhin sollte sich ein Popup hnlich wie
in Abbildung 3-28 ffnen. In der Liste ist eine Reihe von alphabetisch
angeordneten Eintrgen enthalten, die allesamt mit dem eingegebenen
Buchstaben p beginnen. Der momentan ausgewhlte Eintrag ist durch
12
Gleichfalls ffnet es sich, wenn keine Ergnzungen sinnvoll sind, um auf
diesen Umstand hinzuweisen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
118 3 Projekte erstellen und bearbeiten
Abb. 3-28
Popup fr die
Content-Assistenz. Ist
die Anzeige insgesamt
zu klein, so kann das
Fenster mit der Maus
wie gewhnlich
vergrert werden.
einen grauen Balken hinterlegt. Jedem Eintrag wird zustzlich ein Sym-
bol vorangestellt, dessen Aussehen sich nach Art des Eintrages richtet.
Es sind dieselben Symbole, die in Tabelle 3-1 von Abschnitt 3.1.3 auf-
gelistet sind.
Mit Hilfe der Cursor-Tasten whlen Sie nun einen anderen Eintrag
aus. Ist die Liste noch zu gro, knnen Sie die Auswahl durch Eingabe
eines weiteren Zeichens zustzlich eingrenzen. Wenn Sie jetzt z. B. noch
ein r eingeben, so sollte sich die Liste auf einen Eintrag reduzieren,
nmlich auf die printf()-Funktion. Besttigen Sie die Auswahl, indem
Sie die Return-Taste bettigen. Daraufhin schliet sich das Popup, und
die Zeile wird wie gewnscht komplettiert. Zustzlich ffnet sich eine
kleine Hilfe, die den Argumenten der Funktion entspricht. Insbesondere
wird das gerade in Bearbeitung bendliche Argument hervorgehoben.
Ein sehr hilfreiches Feature, besonders bei Funktionen mit langer Argu-
mentenliste.
Das Popup der Content-Assistenz ffnet sich nicht nur durch expli- Triggern der
Content-Assistenz zite Kommandos, sondern kann gleichfalls durch im Text geschriebene
Zeichen getriggert werden. Hierzu zhlen die Operatoren fr den direk-
ten und indirekten Zugriff auf Struktur- oder Klassenelemente, d. h. .
und -> sowie der Namespace-Selektor ::. In den Voreinstellungen
auf der Seite C/C++ > Editor > Content Assist, hier in Abbildung 3-29
zu sehen, knnen Sie nderungen an diesem Verhalten vornehmen.
Vorsicht ist bei den direkten und indirekten Zugriffen geboten, da
sie die Content-Assistenz zumindest in CDT 7.0 nicht unterscheidet, sie
im Text quasi als Synonyme ansieht. Wenn Sie ihr blind vertrauen, kann
dies unter Umstnden zu fehlerhaftem Code fhren, der sptestens vom
Compiler moniert wird.
Sollte Ihnen das Popup aus irgendeinem Grund nicht behagen, so Content-Assistenz ohne
Popup knnen Sie auch die Funktion Edit > Word Completion oder die Tas-
tenkombination ALT+/ nutzen, um durch alle Mglichkeiten direkt im
Quelltext zyklisch zu wandern.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.5 Quelltexte bearbeiten 119
Abb. 3-29
Voreinstellungen der
Content-Assistenz
3.5.10 Makros untersuchen
Prprozessoren sind unabhngig vom Compiler und mssen sich daher
nicht an die Syntax der jeweiligen Sprache halten. Dieser Umstand ist
einer der meistgenannten Kritikpunkte am Konzept von C oder C++.
Viele moderne Programmiersprachen sind deshalb so erschaffen, dass
sie ohne einen Prprozessor auskommen. Fr C oder C++ hingegen
ist ein Prprozessor essentiell. Man denke z. B. an die bedingte ber-
setzung, die die Grundlage fr die Include-Guards stellt. Makros sind
ebenso praktisch, wenngleich es in Zeiten von inline-Funktionen und
Templates quivalenten Ersatz auf Programmiersprachenebene gibt.
Der C/C++-Prozessor basiert auf einfachem Textersatz, was bei ei-
ner arglosen Verwendung von Makros zu unerwartetem Verhalten fh-
ren kann. Mit der auf Tastendruck gestarteten Makroexpansion kann
CDT das Verhalten des Prprozessors nachahmen, wobei das Ergeb-
nis in einem Popup-Fenster prsentiert wird. Auf diese Weise knnen
Probleme mit Makros schon im Vorfeld schnell entdeckt werden. Man
nehme z. B. eine solche Makro-Denition:
#define SQUARE(x) x
*
x
und schreibe
int x = 2;
int y = SQUARE(x+1);
printf("y=%d\n",y);
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
120 3 Projekte erstellen und bearbeiten
in einer Funktion ihrer Wahl. Wenn man von C-Regeln ausgeht, dann
wrde der Text y=9 auf dem Bildschirm ausgegeben. Stattdessen be-
kommt man jedoch y=5 zu Gesicht.
Um solchen Problemen auf die Schliche zu kommen, haben die
Entwickler von CDT in Version 5.0 die Makroexpansion eingefhrt.
Die einfache Makroexpansion wird durch den Mouse-Hover aktiviert,
d. h., Sie bewegen die Maus ber das zu expandierende Makro. Nach
kurzer Zeit erscheint in einem Popup das Ergebnis, sofern Sie diese Op-
tion in den globalen Einstellungen nicht abgeschaltet haben. Auf der
linken Seite von Abbildung 3-30 ist das expandierte Makro zum obi-
gen Beispiel dargestellt.
Abb. 3-30
Makroexpansion
mittels Mouse-Hover
Mit dieser Aktion haben Sie Einblick in das Ergebnis der vollstndigen Schrittweise
Makroexpansion Expansion. Wenn Sie Makros in Makros oder als Argumente benut-
zen, ist diese Hilfe demnach immer noch nicht optimal. Eine schritt-
weise Expansion lsst sich jedoch auch bewerkstelligen: Benutzen Sie
bei markierter Textstelle einfach den Eintrag Explore Macro Expansi-
on im Kontextmen des Texteditors wie auf der linken Seite von Ab-
bildung 3-31 oder bettigen Sie die Tastenkombination STRG+=. Das
Ergebnis der Expansion der Textzeile SQUARE(SQUARE(x+1)) ist dann auf
der rechten Seite dargestellt. Durch die einzelnen Schritte kann unter
Zuhilfenahme von ALT+LINKS und ALT+RECHTS navigiert werden.
3.5.11 Find/Replace
Zu einemTexteditor und damit zu einer Entwicklungsumgebung gehrt
eine Suchfunktion. Eclipse bringt gleich zwei solcher Konzepte mit, die
beide ein unterschiedliches Anwendungsfeld abdecken. In diesem Ab-
schnitt soll uns die mit dem Texteditor verknpfte Funktion interessie-
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.5 Quelltexte bearbeiten 121
Abb. 3-31
Makroexpansion
explorieren
ren, deren Suchbereich sich ber den aktuell in Bearbeitung bendli-
chen Quelltext erstreckt.
Die Optionen dieser Funktion knnen mit Hilfe des Menpunkts
Edit > Find/Replace... oder schnell ber STRG+F hervorgerufen werden,
woraufhin das Fenster hnlich zu Abbildung 3-32 auf Ihrem Bildschirm
erscheinen sollte. Die Auswahlmglichkeiten entsprechen im Prinzip
denen, die Sie von einem gewhnlichen Texteditor bereits kennen.
In Find geben Sie die zu suchende Zeichenkette an. Die Zeichen-
kette, die deren Platz einnehmen soll, tippen Sie in Replace with ein.
Beide Eingabefelder sind als Combobox realisiert, so dass Zeichenket-
ten aus vorausgegangenen Anwendungen der Suchfunktion leicht er-
neut benutzt werden knnen. Die Suchrichtung legen Sie mit Forward
oder Backward fest. Den Suchbereich spezizieren Sie unter Scope, ent-
weder mit All im gesamten Dokument oder mit Selected lines innerhalb
des gerade markierten Textes. Daneben stehen Ihnen noch eine Reihe
von Optionen zur Verfgung:
Case sensitive: Soll zwischen Gro- und Kleinschreibung beim Auf-
nden des Texts unterschieden werden?
Whole word: Soll nach kompletten Wrtern gesucht werden?
Regular expressions: Sollen regulre Ausdrcke beachtet werden?
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
122 3 Projekte erstellen und bearbeiten
Wrap search: Soll die Suche bei Misserfolg je nach Richtung beim
Textanfang oder -ende beginnen?
Incremental: Soll inkrementell gesucht werden? Bei aktivierter Op-
tion wird die Zeichenkette bereits bei der Eingabe, sozusagen on
the y, gesucht und markiert.
Abb. 3-32
Find/Replace-Dialog.
Bei aktivierter Regular
expression-Option
erhalten Sie Hilfe fr
Eingabemglichkeiten
durch die von einer
Glhbirne
gekennzeichnete
Feld-Assistenz.
Erklrenswert ist die Option Regular expressions. Ist diese Option ak-
tiviert, werden die Optionen Whole word und Incremental gesperrt. Sie
knnen dann in beiden Texteingabefeldern regulre Ausdrcke verwen-
den. Eine Aufschlsselung aller benutzbaren Ausdrcke inklusive einer
detaillierten Beschreibung erhalten Sie durch die mit einer Glhbirne
gekennzeichnete Feld-Assistenz, die Sie hnlich der Content-Assistenz
im Textfeld mit Hilfe von STRG+SPACE aufrufen.
Interessant dabei ist die Zeichenkette \C, die fr die Operation Gro- und
Kleinschreibung beim
Ersetzen beibehalten
Retain case steht und innerhalb der einzusetzenden Zeichenkette ange-
geben werden kann. Die Verwendung dieser Operation hat zur Folge,
dass sich die Gro- und Kleinschreibung der zu ersetzenden Zeichen-
kette nach folgenden Regeln anpasst:
Enthlt die zu ersetzende Zeichenkette nur Kleinbuchstaben, so
auch die eingesetzte Zeichenkette nach \C.
Enthlt die zu ersetzende Zeichenkette nur Grobuchstaben, so
auch die eingesetzte Zeichenkette nach \C.
Enthlt die zu ersetzende Zeichenkette Klein- und Grobuchstaben,
wird \C ignoriert, d.h., die eingesetzte Zeichenkette bleibt bestehen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.5 Quelltexte bearbeiten 123
Um den Zweck dieser Funktion zu demonstrieren, laden Sie von un-
serem Projekt die Datei directory.cpp in den Texteditor. Ziel wird es
sein, das Wort size, das in einem Methodennamen auch in der Form
Size vorkommt, durch space respektive Space zu ersetzen.
Zuvor sollten Sie die Datei allerdings sichern. Der Einfachheit hal- Sicherheitskopien
anlegen ber gengt es hier, das Projekt zu duplizieren. Stellen Sie hierfr sicher,
dass ausschlielich das dirscanner-Projekt selektiert ist. Bettigen Sie
anschlieend STRG+C, um zu kopieren, und danach gleich STRG+V,
um die Kopie einzufgen. Als neuen Projektnamen knnten Sie z. B.
dirscanner.bak whlen.
ffnen Sie jetzt den Find-/Replace-Dialog. Als Suchtext nehmen Suchen und Ersetzen
anwenden wir size bei deaktivierter Case sensitive-Option. Als zu ersetzenden
Text nehmen wir \CSpace. Anschlieend bettigen wir Replace All, um
alle Vorkommen auf einmal zu ersetzen und berzeugen uns vom Re-
sultat. Dass der Aufruf von file
_
size() nun file
_
space() lautet, stellt
allerdings ein Problem dar, das wir durch manuelles ndern auf den
ursprnglichen Zustand lsen knnen. Um weiterhin ein bersetzba-
res Programm vorliegen zu haben, mssen Sie den Vorgang des Su-
chens und Ersetzens selbstverstndlich fr alle Dateien wiederholen,
die die Methode vorher benutzt haben, inklusive der Header-Datei
directory.hpp. ffnen Sie hierfr die entsprechenden Dateien. Dabei
bleiben die Angaben im Find-/Replace-Dialog unverndert.
Abb. 3-33
Die um den Bereich fr
die inkrementelle
Suche (eingekreist)
ergnzte Statusleiste
Die inkrementelle Suche knnen Sie auch direkt ber den Texteditor
erreichen, ohne dass Sie den Umweg ber das Find/Replace-Fenster ge-
hen. Das Schne an dieser Variante ist, dass die Hnde nicht von der Inkrementell suchen
Tastatur weichen mssen und insbesondere der Textbereich nicht durch
das Fenster berdeckt wird. Hierzu bettigen Sie im Texteditor die Tas-
tenkombination STRG+J, um die Eingabe in diesen Suchmodus umzu-
schalten. In der Statusleiste erscheint dann ein zustzliches Feld, das in
Abbildung 3-33 eingekreist ist. Sobald Sie nacheinander ein paar Buch-
staben eingeben, ersetzen diese den ursprnglichen Text Incremental
Find. Gleichzeitig wird die nchste mit der eingegebenen Zeichenkette
bereinstimmende Stelle im Quelltext hervorgehoben. Sie knnen den
Text erweitern oder Buchstaben mittels BACKSPACE lschen. Die nchs-
te darauf passende Stelle wird sofort angezeigt. Mit weiteren Eingaben
von STRG+J springen Sie zum folgenden Vorkommen. Halten Sie da-
bei SHIFT gedrckt, wird die Suchrichtung gewechselt. Existiert keine
solche Stelle, so macht dies eine rot gefrbten Meldung deutlich.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
124 3 Projekte erstellen und bearbeiten
3.5.12 Setters und Getters erzeugen
Eine gesunde Klassendenition verwendet Attribute, auf denen kein di-
rekter Zugriff auerhalb der Klasse selbst mglich ist. Zugriff wird nur
mit speziellen Methoden gestattet, den Abfragefunktionen (engl. get-
ter) fr das Auslesen und den nderungsmethoden (engl. setter) fr das
Setzen von Attributen.
CDT kann Ihnen dabei behilich sein, die trivialen Methoden hier-
fr aufzustellen, was bei Klassendenitionen, die viele Attribute um-
fassen, schon einiges an Tippaufwand einspart. Um die Funktionalitt
aufzurufen, benutzen Sie den Meneintrag Source > Generate Getters
and Setters....
In einem neuen Fenster knnen Sie dann die Methoden anklicken,
die erzeugt werden sollen. Abbildung 3-34 zeigt den Dialog fr die Di-
rectory-Klasse an, wobei kurz zuvor das Attribut ignored hinzugefgt
wurde. Fr das Attribut name lsst sich nur der Getter aktivieren, da
diese Variable in der Klassendenition mit dem Schlsselwort const ver-
sehen wurde, also nicht neu gesetzt werden darf. Mit einen Klick auf
Finish gelangt der entsprechende Code als inline implementierte Me-
thode in die Klassendenition.
Abb. 3-34
Welche Setter und
Getter sollen erzeugt
werden?
3.5.13 Methode implementieren
Eine weitere Refaktorisierungsmethode, die auch nur eine Tipper-
leichterung dargestellt, versteckt sich unter dem Punkt Implement Me-
thod.... Wenn Sie im Quelltext oder im Outline-View eine Methode
markieren und diese Funktion ber das Kontextmen aufrufen, dann
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.5 Quelltexte bearbeiten 125
wird das dafr notwendige Gerst erzeugt. Beispielsweise liegt Ihnen
folgende Klassendenition vor:
class
{
void doSomething(int param);
};
Wenn Sie den Cursor auf die Methodendenition doSomething() bewe-
gen und dann Implement Method aufrufen, dann erscheint zunchst in
der Vorschau das folgende Gerst:
inline void Test::doSomething(int param)
{
}
Wenn sich die Klassendenition in einer Header-Datei bendet und falls
eine dazugehrigen Quelltextdatei existiert, ist CDT clever genug, den
Code in letzterer Datei einzubinden.
13
3.5.14 Kommentare fr externe
Dokumentationswerkzeuge
Es leuchtet jedem Entwickler ein, dass Kommentare innerhalb der
Quelltexte nicht nur nette Beigaben sind, sptestens dann, wenn man
die Aufgabe bekommen hat, mehr schlecht als recht dokumentierte
Quelltexte von anderen Entwicklern zu pegen. Trotzdem ndet man
sich hug genau in dieser Situation. Damit die Programmierer bei Ih-
rem Leid nicht ganz auf sich alleine gestellt sind, wurden diverse Kon-
zepte entwickelt. Ein Beispiel hierfr ist das literarische oder gebildete
Programmieren [12] (engl. literate programming), das die Philosophie
verfolgt, den Quelltext eines Programmes in seine Dokumentation ein-
zubetten. Die Aufgabe eines Programmierers ist demnach nicht mehr,
den Rechner zu instruieren, sondern dem Leser beizubringen, wie ein
bestimmtes Problem vom Rechner gelst werden kann.
Einen weniger radikalen Ansatz verfolgen hingegen Werkzeuge, die Doxygen
die Dokumentation aus dem Quelltext extrahieren. Ein solches Pro-
gramm ist z. B. doxygen [5], das in den Kommentaren eines Quelltextes
nach Schlsselwrtern, den Dokumentationstags, sucht und daraus die
komplette Dokumenation in diversen, auswhlbaren Formaten zusam-
menstellt [13].
CDT kann Ihnen bei der Erstellung solcher im Quelltext eingebet-
teten Beschreibungen zur Hilfe gehen, indem es die Kommentargerste
13
Dabei gehrt eine Quelltextdatei nach den blichen Konventionen zu einer
Header-Datei, d. h., dass die Namen sich nur in ihrem Sufx unterscheiden.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
126 3 Projekte erstellen und bearbeiten
fr Sie schnell per Tastendruck erzeugt. CDT stellt hierfr gleich ein
ganzes Framework bereit, das sich nicht nur auf ein Tool und des-
sen Syntax festlegt. Plugins knnen sich in bereitgestellte Erweiterungs-
punkte einklinken und Ihnen so bei dem Einsatz unterschiedlicher Do-
kumentationstools assistieren.
Zuflligerweise bringt CDT die Untersttzung fr das bereits er- Die Untersttzung von
doxygen im Editor
aktivieren
whnte doxygen gleich mit sich. Normalerweise ist diese Funktion nicht
eingeschaltet, so dass Sie zunchst selbst Hand anlegen mssen, um in
den Genuss dieser ntzlichen Hilfe zu kommen. Dabei haben Sie die
Wahl zwischen einer globalen und einer projektspezischen Aktivie-
rung. Ersteres geschieht in den Voreinstellungen auf der Seite C/C++
> Editor im Kasten Documentation tool comments, wo Sie die Aus-
wahlbox auf doxygen stellen. Die gleichen Einstellungen nden Sie auf
der Seite C/C++ General in den Projekteigenschaften wieder, was die
erwhnte projektspezische Aktivierung ermglicht.
Fr was auch immer Sie sich entscheiden, sobald Sie die Funktio- Kommentare fr
doxygen werden
besonders
hervorgehoben.
nen eingeschaltet haben, wird der Syntax-Parser erkannte Dokumenta-
tionsteile gesondert hervorheben. Vorher standardmig grn gedruck-
te Kommentare werden nun blau eingefrbt, wenn sie von doxygen ge-
parst werden knnen. Damit wird auf den ersten Blick klar, ob es sich
bei einem Kommentar um eine API-Beschreibung oder um einen sons-
tigen Kommentar handelt. Innerhalb eines Kommentarblocks werden
alle bekannten Dokumentationstags nochmals durch ein helleres Blau
besonders hervorgehoben.
Des Weiteren wird bei Eingabe einer entsprechenden Erkennungs- Kommentargerst
erzeugen sequenz, wie /
*
! und /
**
, in einer neuen Zeile ber einer Funktion oder
Methode das vollstndige Kommentargerst inklusive des Kommenta-
rabschlusses hinzugefgt. Dieses Gerst besteht aus den Tags fr die
vorhandenen Eingabeparameter sowie fr den Rckgabewert.
Innerhalb eines Doxygen-Kommentarblocks steht Ihnen selbstver- Content-Assistenz
stndlich auch die Content-Assistenz zur Seite. Trigger hierfr sind die
Tag-Marker @ oder \. Drcken Sie nach einer Zeichenkette, die mit
einem solchen Zeichen beginnt, die Tastenkombination STRG+SPACE,
dann erscheint eine Liste, die alle komplettierenden Tags enthlt.
Probieren Sie das Ganze doch einmal aus. Schalten Sie die Unter-
sttzung von doxygen fr das Projekt dirscanner wie besprochen ein.
Platzieren Sie anschlieend den Cursor in der Datei directory.cpp kurz
vor demKonstruktor. Geben Sie dann /
**
ein und drcken Sie RETURN.
CDT erzeugt daraufhin den Kommentarrumpf
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.5 Quelltexte bearbeiten 127
/
**
*
*
@param name
*
/
Directory :: Directory(const char
*
name)
{
this->name = name;
}
Was CDT leider fehlt, ist die Mglichkeit, die Dokumentation aus den
Quelltexten zu extrahieren. Es wre zum Beispiel schn, wenn die for-
matierte Dokumentation einer Funktion in einem Popup erscheint, so-
bald sich der Mauszeiger beispielsweise ber einer Referenz auf die
Funktion bendet. Momentan erscheint zwar ein Popup, allerdings ent-
hlt er den unprozessierten Kommentarblock.
Ebenso vermag CDT nicht, das doxygen-Tool selbststndig aufzu-
rufen. Das ist insbesondere dann rgerlich, wenn Sie von CDT verwal-
tete Projekte benutzen. Zwar knnen Sie in diesem Fall einen Custom
Build Step z. B. fr die Kongurationsdatei von doxygen aktivieren
14
,
doch ist eine Aktualisierung der erzeugten Dokumentation nur auf um-
stndlichem Wege zu erreichen, am ehesten noch, indem Sie die Kon-
gurationsdatei modizieren. Eine bessere Mglichkeit stellt hingegen
die Einbindung von doxygen mit Hilfe des Launcher-Frameworks dar.
Dieses ist Bestandteil von Kapitel 5, wobei auf doxygen ganz konkret
in Abschnitt 5.2 eingegangen wird.
3.5.15 Bookmarks
Bookmarks bzw. Lesezeichen sind, wie der Name schon suggeriert,
Hilfsmittel, um die Position bestimmter Textstellen festzuhalten. Ein
solches Lesezeichen knnen Sie fr jede Datei an beliebiger Zeilen-
position setzen, indem Sie das Kontextmen auf der linken Markie-
rungsleiste hervorrufen und Add Bookmark... auswhlen. Ein Fenster
erscheint, in dem Sie einen fr Sie bedeutungsvollen Namen angeben
sollen.
Wenn Sie das Kontextmen ber einem bereits vorhandenen Le-
sezeichen herbeirufen, knnen Sie das Lesezeichen mit Remove Book-
mark entfernen. Eine weitere Gelegenheit dafr gibt Ihnen der Book-
mark-View, der smtliche Lesezeichen aus dem Workspace Zeile fr
Zeile auistet. Die Verwaltung wird abermals ber ein Kontextmen
oder entsprechende Shortcuts ermglicht. Zu ffnen ist der View mit-
tels Window > Show View > Other > General > Bookmarks.
14
Was das genau ist, erfahren Sie im nchsten Kapitel.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
128 3 Projekte erstellen und bearbeiten
3.5.16 Makele
Wenn Sie sich entscheiden, ein klassisches Makele-basiertes Projekt
anzulegen, in dem die Aufgabe des Gestaltens des Makeles bei Ihnen
liegt, so wird Sie sicher freuen, dass CDT auch Untersttzung fr die
Bearbeitung von Makeles gewhrt. Die Untersttzung geht dabei wei-
ter als reines Syntax Highlighting. Sowohl die Funktion der Content-
Assistenz als auch die des Outline-Views werden untersttzt. Welche
Elemente des Makeles im Outline-View durch welche Piktogramme
reprsentiert werden, nden Sie in Tabelle 3-4.
Tab. 3-4
Symbole fr
Make-Elemente im
Outline-View
Symbol Bedeutung
Anweisung
Fehler beim Parsen
Include
Makro
Regel und Target
3.5.17 Undo/Redo-Funktion
Eclipse untersttzt wie jeder moderne Editor eine Undo-/Redo-Funkti-
on, die durch die Standardmeneintrge Edit > Undo und Edit > Redo
oder schneller durch die Hotkeys STRG+Z bzw. STRG+Y aufzurufen
sind. Die Schritttiefe ist begrenzt und lsst sich in den Voreinstellungen
auf der Seite General > Editors > Text Editors unter Undo history size
angeben. Die Undo-History zeichnet neben den einfachen Tastaturein-
gaben auch komplexere Operationen auf. Hierzu zhlt beispielsweise
die Komplettierung durch die Content-Assistenz genauso wie das For-
matieren des Quelltextes, so dass sie auch rckgngig gemacht werden
knnen.
Neben dieser einfachen Mglichkeit, zu vorherigen Zustnden zu-
rckzukehren, wartet Eclipse noch mit der lokalen Historie (engl. local
history) auf. Hier werden nicht einzelne Schritte aufgezeichnet, sondern
konsekutive Revisionen, die bei jedem Abspeichern erzeugt werden. Ei-
ne Besonderheit dieser Methode besteht darin, dass Eclipse Ihnen die
Unterschiede in aufbereiteter Form darbietet. Dies stellt im Grunde ein
eigenes Thema dar und verdient deshalb im nchsten Abschnitt eine
genauere Betrachtung.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.6 Dateienvergleich 129
3.6 Dateienvergleich
Manchmal ist es vonnten, zwei Dateien miteinander zu vergleichen,
z. B. dann, wenn man eine Datei fr verschiedene Projekte benutzt, die-
se allerdings unabhngig weiterentwickelt. Nach einigen Entwicklungs-
zyklen stellt man schlielich fest, dass die Zweigleisigkeit doch nicht
der Weisheit letzter Schluss ist und man die gemeinsam verwendeten
Dateien den Projekten viel besser als Modul htte zugnglich machen
sollen. Das soll jetzt nachgeholt werden, mit dem kleinen Problem, dass
unterdessen unterschiedliche Modikationen in beiden Dateien vorge-
nommen worden sind. Ein Programm wie diff vermag es, diese Un-
terschiede auszumachen, die je nach Ausgabemodus sogar gut lesbar
prsentiert werden. Selbstverstndlich lsst auch Eclipse eine Funkti-
on dieser Gestalt nicht vermissen. Dabei werden die Unterschiede recht
pfg prsentiert, wie Sie im Folgenden sehen werden.
3.6.1 Zwei Dateien vergleichen
Um zwei Dateien miteinander zu vergleichen, mssen Sie zuerst dafr
Sorge tragen, dass nur diese in einem Navigations-View selektiert sind,
bevor Sie den Eintrag Compare With > Each Other wie in Abbildung 3-
35 in dessen Kontextmen auswhlen.
Abb. 3-35
Kontextmen
Nach einer kurzen Denkpause ffnet sich ein neues Feld im Editierbe-
reich der Compare-Editor. Abbildung 3-36 zeigt ein solches Ergebnis.
Hier werden die nderungen an der Datei dirscanner.cpp anhand der
vorher angelegten Sicherheitskopie visualisiert.
Oben bendet sich das Feld C Compare, in dem die Unterschie-
de zwischen den Strukturelementen beider Quelltexte angezeigt wer-
den, und so im Prinzip eine Vergleichsansicht der Inhalte des Outline-
Views darstellt. Elemente, die in beiden Quelltexten vorkommen, wer-
den nicht angezeigt, wohingegen voneinander abweichende Elemente
entweder mit einem Plus- oder mit einem Minuszeichen versehen sind.
In dem Fall wurde also die Methode getSize() entfernt und die Metho-
de getSpace() hinzugefgt.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
130 3 Projekte erstellen und bearbeiten
Abb. 3-36
Zwei Dateien
vergleichen
Ob ein Plus- oder Minuszeichen benutzt wird, hngt freilich davon ab,
welche Datei als Referenz dient. Diese Information erhalten Sie im un-
teren Teil der Ansicht in jenem, der mit C Compare Viewer betitelt
ist. Er besteht aus zwei Textanzeigen, die je eine Datei aufnehmen: links
die, die als neu angesehen wird, rechts die Referenz
15
.
Der wesentliche Sinn dieser Anzeige ist jedoch die detaillierte Auf-
bereitung der Unterschiede, die auf Zeilenbasis durch kleine Boxen
kenntlich gemacht werden und um den Text gezeichnet sind, wobei
korrespondierende Boxen miteinander verbunden werden. Textpassa-
gen, in denen sich keinerlei Differenzen ergeben, umrandet die Entwick-
lungsumgebung nicht. Eclipse versucht, die Boxen in ihrer vertikalen
Ausrichtung so anzugleichen, dass korrespondierende Boxen mglichst
dicht beieinander liegen, was sich auch in der bersichtsleiste wider-
spiegelt. Die zeichengenauen nderungen innerhalb eines Boxenpaars
werden dann durch dunkel hinterlegte Markierung angezeigt
16
.
15
Folglich bedeutet ein Pluszeichen in C Compare, dass das entsprechende
Element als neu in der linken Datei anzusehen ist.
16
Ist Ihnen das zu berladen, knnen Sie diese Markierungsfunktion neben
vielen anderen Optionen in den globalen Einstellungen auf der Seite General >
Compare/Patch abschalten bzw. modizieren.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.6 Dateienvergleich 131
Da es sich beim Feld um einen Compare-Editor handelt, knnte
man erwarten, Editorfhigkeiten vorzunden. In der Tat lassen sich bei-
de Texte modizieren, wenngleich viele Komfortfunktionen fehlen; eine
Content-Assistenz sucht man vergeblich. Bendet sich der Cursor in ei-
ner Box, dann ist diese aktiviert. Manche Operationen, wie z. B. das
Speichern der Texte (Tastenkombination ALT+S), bewirken, dass der
Vergleich neu ausgefhrt und die Ansicht aktualisiert wird.
Mit Hilfe der Buttons, die in der Abbildung gekennzeichnet sind,
lassen sich weitere Funktionen ausfhren. Sie knnen:
mit Copy All from Left to Right den gesamten Text von links nach
rechts kopieren,
mit Copy All Non-Conicting Changes from Right to Left den ge-
samten Text von rechts nach links kopieren,
mit Copy Current Change fromLeft to Right den Inhalt der aktiven
Box von links nach rechts kopieren,
mit Copy Current Change fromRight to Left den Inhalt der aktiven
Box von rechts nach links kopieren,
mit Next Difference sich zum folgenden Unterschied bewegen, d. h.
die nchste Box aktiveren,
mit Previous Difference die vorherige Box aktivieren,
mit Next Change den Cursor zur nchsten nderung bewegen oder
mit Previous Change den Cursor zur vorherigen nderung bewe-
gen.
Das hier beschriebene Benutzerinterface ist keineswegs auf den expli-
ziten Vergleich zweier Dateien beschrnkt. Eclipse benutzt es fr viele
Situationen wieder, in denen Unterschiede zwischen zwei Zustnden
von Textdateien betrachtet werden mssen. Ein Beispiel hierfr nden
Sie noch in diesem Abschnitt. Davor erfahren Sie allerdings, wie Sie das
Ergebnis eines Dreiwegedateienvergleichs zu interpretieren haben.
3.6.2 Drei Dateien vergleichen
Mit der Compare-Funktion knnen Sie den Vergleich von drei Dateien
anstellen. Die Annahme besteht darin, dass zwei Dateien in der dritten
Datei ihren gemeinsamen Vorfahren haben. Eine solche Situation tritt
beispielsweise auf, wenn zwei Personen ein und dieselbe Datei lokal
auf ihren Rechnern unabhngig voneinander modiziert haben und die
nderungen nun wieder auf Basis der Originaldatei zusammengefhrt
werden sollen. Diese Aufgabenstellung ist nicht selten. Im Gegenteil,
sie kommt sogar sehr hug vor, und zwar dann, wenn Projekte mittels
eines Versionsverwaltungssystems verwaltet werden.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
132 3 Projekte erstellen und bearbeiten
Die erweiterte Funktion knnen Sie fast genauso wie oben aufrufen,
nur dass Sie dieses Mal drei Dateien zu selektieren haben. Im darauf-
folgenden Dialog, der auch in Abbildung 3-37 dargestellt ist, bittet Sie
Eclipse, den gemeinsamen Vorfahren zu denieren, bevor das Ergeb-
nis prsentiert wird. Wie dieses zu interpretieren ist, wird in Kapitel 6
ausfhrlich beschrieben, da der Dreiwegevergleich besonders beim ge-
meinsamen Entwickeln oder bei sder Verwendung verschiedener Ent-
wicklungszweige eine zentrale Rolle spielt.
Abb. 3-37
Welche Datei soll als
Referenz dienen?
3.6.3 Lokale Historie
Wie schon am Ende des letzten Abschnitts erwhnt, weist Eclipse neben
der Undo-/Redo-Funktion eine lokale Historie aus, in der anstelle der
einzelnen Editierschritte Speicherstnde vermerkt werden.
Wenn Sie eine Ressource durch eine frhere Version ersetzen mch-
ten, so whlen Sie den Menpunkt Replace With > Local History....
Hier wird Ihnen dann eine Liste mit allen getrackten Versionen pr-
sentiert. Whlen Sie die gewnschte Version aus, die durch den Zeit-
punkt ihrer Sicherung gekennzeichnet ist, und drcken Sie den Button
Replace, um die Aktion durchzufhren. Anders als bei der Undo-Funk-
tion, bei der eine weitere Modizierung die Aktionen im Restpuffer
komplett lscht, werden neue Revisionen der nderungsliste einfach
angehngt. Die Versionen, die zwischen ersetzter und zu ersetzender
Version liegen, bleiben also bestehen.
Natrlich kann sich kein Mensch merken, zu welchem Zeitpunkt
er welche nderung gettigt hat. In den seltensten Fllen tippt man
auf Anhieb auf die gewnschte Version. Wenn Sie auf einen Eintrag
in der Liste doppelklicken, wird der Rest des Fensters ausgefllt und
es ergibt sich eine Ansicht, wie sie Abbildung 3-38 zeigt. In ihr ist die
bekannte Vergleichskomponente eingebettet, so dass ein komfortables
Begutachten der Unterschiede ermglicht wird. nderungen direkt im
Text knnen hier allerdings nicht vorgenommen werden.
Standardmig werden die Versionen in der lokalen Historie sieben
Tage lang mit maximal 50 Eintrgen pro Datei vorgehalten, solange sie
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.7 Working-Sets 133
Abb. 3-38
Lokale Historie
die Gre von 1 MB nicht berschreitet. Auch hier lassen sich die Pa-
rameter einstellen. Zu nden sind die Angaben in den Voreinstellungen
General > Workspace > Local History.
3.7 Working-Sets
Obwohl Ihr Workspace eine unlimitierte Anzahl von Projekten aufneh-
men kann, werden Sie oftmals nur wenige Projekte gleichzeitig bearbei-
ten. Bei der Flle von Projekten, die sich im Verlauf eines Workspace-
Lebens ansammeln, verliert man jedoch leicht die bersicht. Eine Mg-
lichkeit dieses Problem zu umgehen, bestnde darin, dass Sie mehr als
einen Workspace benutzen und von Zeit zu Zeit wechseln. Doch leidet
bei dieser Vorgehensweise ein wenig die Flexibilitt, denn Projekte kn-
nen sich gegenseitig nur referenzieren, wenn Sie im selben Workspace
vorhanden sind. Folglich mssen Sie von vornherein wissen, welche
Projekte spter einmal einander bedrfen.
Den Durchblick im Dschungel der Ressourcenbume schaffen hier
die Working-Sets, die im Grunde nichts weiter sind als eine Unter-
menge aller im Workspace vorhandenen Ressourcen, die Sie frei ge-
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
134 3 Projekte erstellen und bearbeiten
stalten. Einmal speziziert, fungieren sie als exakter Ressourcenlter
in den Navigations-Views: Ressourcen, die nicht in dem Set vorkom-
men, werden nicht angezeigt. Bei der projektbergreifenden Suche sind
Working-Sets dienlich, um den Suchraum einzugrenzen. Ebenso ist es
mit ihnen mglich, Annotationen in Views wie dem Task-View zu l-
tern. Mit Hilfe der Working-Sets knnen Sie also die Ressourcen in
Ihrem Workspace je nach Aufgabe kategorisieren und die bersicht in
Ihrem Workspace wiederherstellen.
3.7.1 Ein Working-Set erstellen
Ein neues Working-Set denieren Sie am bequemsten ber das Men
Window > Working Sets > Edit..., das Sie im linken Teil von Abbil-
dung 3-39 sehen. Falls Sie dieses bei Ihrem System nicht aufnden kn-
nen, so liegt das vielleicht daran, dass die aktuelle Perspektive die vor-
gesehene Kommandogruppe nicht beinhaltet. Fgen Sie in solch einem
Fall, so wie in Abschnitt 2.6.1 auf Seite 62 beschrieben, die Kommando-
gruppe Window Working Set zur Perspektive hinzu. Alternativ knnen
Sie sich jedoch auch des Mens von einem Navigations-View bedienen,
indem Sie dort den Eintrag Select Working Set... whlen, wie im rechten
Teil der Abbildung zu sehen ist.
Abb. 3-39
Working-Sets
bearbeiten
In beiden Fllen ffnet sich ein hnliches Fenster, das alle momentan
vorhandenen Working-Sets anzeigt. Um damit ein neues Set zu denie-
ren, klicken Sie auf New.... Zunchst werden Sie nach dem Typ des
Working-Sets gefragt. Relevant fr die Anwendungen, die in diesem
Buch besprochen werden, sind:
Ressource. Das Working-Set besteht aus beliebigen im Workspace
vorkommenden Ressourcen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.7 Working-Sets 135
C/C++. Das Working-Set adressiert die Ressourcen von C/C++-Pro-
jekten, ist aber bis auf das Symbol identisch zu obiger Variante.
Breakpoint. Das zu spezizierende Working-Set ist eine Untermen-
ge aller im Workspace bendlichen Breakpoints.
Nach der Selektion des richtigen Typs und einem anschlieenden Klick
auf Next > erscheint eine neue Seite. Unabhngig vom Typ gehrt zu je-
dem Working-Set ein aussagekrftiger Name, so dass Sie das Working-
Set spter selbst zuordnen knnen. Diesen geben Sie im oberen Textein-
gabefeld an, whrend der grere untere Teil des Fensters spezisch fr
den Working-Set-Typ ist.
Bei Ressourcen- oder C/C++-Working-Sets bekommen Sie wie in
Abbildung 3-40 einen Baum dargestellt, der die Ressourcen-Hierarchie
enthlt. Mit der Auswahlbox vor jeder Ressource geben Sie an, ob die
Ressource zum Working-Set zugehrig ist oder nicht. Haben Sie Ihre
Eingaben vorgenommen, so besttigen Sie diese mit Finish.
Abb. 3-40
Working-Set denieren
Eine weitere Mglichkeit, ber die Zugehrigkeit von Ressourcen in
einem Working-Set zu entscheiden, bieten Ihnen die Meneintrge
Edit > Add to Working Set und Edit > Remove from Working Set,
die im Untermen die Working-Sets auisten, zu denen Sie die in ei-
nem Navigations-Viewselektierte Ressource hinzufgen bzw. entfernen
knnen. Natrlich sind diese Funktionen auch ber die Werkzeugleiste
verfgbar.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
136 3 Projekte erstellen und bearbeiten
3.7.2 Working-Sets einschalten
Um ein oder mehrere Working-Sets fr den aktuellen View einzuschal-
ten (meistens ein Navigations-View), benutzen Sie das zum View geh-
rige Pulldown-Men, wie auf der rechen Seite von Abbildung 3-39 zu
sehen ist. Whlen Sie dort also den Menpunkte Select Workingset...
aus und markieren Sie im Select Working Set-Dialog die gewnschten
Working-Sets. Bevor Sie die Eingabe mit Ok besttigen, sollte ebenso
der Punkt Selected Working Set angeschaltet sein, um den View zu in-
struieren, eben genau jene Working-Sets in Betracht zu ziehen.
3.7.3 Workbench-Working-Sets
Die Workbench-Working-Sets (oder Window-Working-Sets) sind vom
Benutzer spezizierbare Working-Sets, die per Vorgabe in allen Views
aktiv sind, die das Konzept der Working-Sets untersttzen. Damit
wird eine sinnvolle Anwendung der Working-Sets ungemein erleichtert:
Workspace-weit beziehen sich die Views auf die gleichen Ressourcen;
sie mssen also nicht explizit fr jedes View gesetzt werden.
Dabei knnen Sie imUntermen zumMeneintrag Window> Wor-
king Sets die Working-Sets anwhlen, die Sie dem Window-Working-
Set zurechnen mchten. Selbstverstndlich ist diese Funktion auch ber
die Werkzeugleiste ber ein Pulldown-Men verfgbar. Sobald Sie die
Zugehrigkeiten modizieren, wird die Ansicht aller Views aktualisiert,
die unter diesem Modus laufen. Haben Sie einem View bereits ein spe-
zielles Working-Set zugewiesen, dann knnen Sie dies im Dialog Select
Working Set mit der Auswahl von Window Working Set rckgngig
machen.
3.8 Tasks
Tasks, die ein Bestandteil von Eclipse-basierten Entwicklungsumgebun-
gen sind, erlauben dem Entwickler, beliebige Zeilen des Quelltextes mit
wichtigen Kommentaren zu versehen, die noch zu erledigende Aufga-
ben beinhalten oder ber eventuelle Probleme informieren. Zum Bei-
spiel knnte es sein, dass Sie einmal folgende Zeilen eintippen:
/
*
Find appropriate bin
*
/
int w = 0;
for (i=0;i<n;i++)
{
w += a[i];
if (w > point) break;
}
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.8 Tasks 137
Ihnen ist beim Schreiben bereits klar, dass es in Bezug auf die Perfor-
mance geschickter wre, eine binre Suche anzuwenden. Diese nde-
rung mchten Sie jedoch erst zu einem spteren Zeitpunkt hinzufgen.
Wichtig ist zunchst nur, dass der Code funktioniert
17
. Sinnvoll ist aller-
dings, diese Stelle speziell zu kommentieren, damit Sie sie zu gegebener
Zeit schnell wieder aufnden.
3.8.1 Tasks hinzufgen
Wenn Sie einen neuen Task hinzufgen mchten, klicken Sie mit rechter
Maustaste auf dem Marker-Bereich des Editors auf die Zeile, zu der
der neue Task gehren soll. Im Kontextmen whlen Sie Add Task...
woraufhin sich ein Fenster wie in Abbildung 3-41 ffnet, mit dessen
Hilfe Sie den Task genauer spezizieren knnen.
Abb. 3-41
Eigenschaften eines
Tasks
Unter Description geben Sie den Kommentar an, also beispielsweise
Use binary search. Mit Priority spezizieren Sie die Wichtigkeit der
Anmerkung. Hier haben Sie die Auswahl zwischen Low, Normal und
High. Gleich daneben bendet sich eine Auswahlbox Completed, mit
der Sie angeben, dass Sie die beschriebene Aufgabe vollendet haben.
Darunter benden sich drei weitere Informationen, die letztendlich die
Position des Markers anzeigen.
3.8.2 Tasks durch spezielle Schlsselwrter
Neben der im letzten Abschnitt vorgestellten Methode, neue Tasks zu
erstellen, existiert noch die Mglichkeit, Tasks innerhalb des Quelltex-
tes durch spezielle Schlsselwrter zu kennzeichnen. Fgen Sie im obi-
gen Codeausschnitt z. B. die Zeilen
/
*
TODO: Use binary search
*
/
17
Je nach Projektart knnte es aber auch Sinn haben, eine bereits vorgefer-
tigte Bibliothek zu verwenden.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
138 3 Projekte erstellen und bearbeiten
nach dem ersten Kommentar hinzu, so erscheint das schon bekannte
Symbol fr einen Task an der richtigen Stelle. Die Erkennung des Textes
TODO ist bereits in CDT eingebaut. Weitere Zeichenketten knnen Sie in
den globalen Einstellungen hinzufgen. blich ist beispielsweise noch
die Einstellung FIXME, die ber Code geschrieben wird, der in seiner
Funktionalitt noch sehr stark eingeschrnkt ist.
Verglichen mit dem manuellen Hinzufgen von Tasks ist der Vor-
teil der quelltextbasierten Methode, dass diese unabhngig von CDT
oder Eclipse ist und Tasks selbst in einfachen Quelltexteditoren noch
erkennbar sind. Abgesehen davon ist es natrlich ssiger, Tasks direkt
ber die Tastatur als ber die Benutzeroberche einzugeben.
3.8.3 Tasks anzeigen lassen
Alle im Workspace vorhandenen Tasks knnen Sie im Task-View be-
gutachten, wie Sie in Abbildung 3-42 erkennen. Darin wird zwischen
im Editor eingegebenen Tasks und den mit der Maus hinzugefgten un-
terschieden, wie in der Type-Spalte zu sehen ist.
Fr die Tasks ersteren Typs sind die zustzlichen Eigenschaften des
Vollendet-Status und der Prioritt dargestellt. Fr diese Tasks drfen Sie
auch die nderbaren Eigenschaften modizieren, indem Sie auf das zu
ndernde Feld doppelklicken. Ein Doppelklick auf einen C/C++-Task
fhrt Sie immerhin auch auf dessen Stelle im Quelltext.
Abb. 3-42
Der Task-View
Go to. Der Texteditor wird auf die Stelle des Tasks gesetzt.
Add Task.... Sie knnen einen neuen Task hinzufgen. Die Zeilen-
nummer und Ressource lsst sich auf diesem Weg jedoch nicht spe-
zizieren!
Delete. Damit lschen Sie den selektierten Task, sofern dieser kein
C/C++-Task ist.
Delete Completed Tasks. Hiermit lschen Sie alle als vollendet de-
klarierten Tasks.
Mark Completed. Den selektierten Task knnen Sie damit als
vollendet deklarieren.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.9 Refaktorisierung 139
3.9 Refaktorisierung
Unter dem Begriff Refaktorisierung (engl. refactoring) fasst man ver-
schiedene Vorgehensweisen zusammen, die das Umgestalten von Quell-
text mit dem Ziel der einfacheren Wartbarkeit verfolgen, ohne dass
diese nderungen jedoch das sichtbare Verhalten des erzeugten Pro-
gramms beeinussen. War man frher gezwungen, derartige Texttrans-
formationen manuell durchzufhren nicht selten schlich sich da-
bei der Fehlerteufel ein , so stellen heutige Entwicklungsumgebun-
gen enorme Hilfestellungen bereit und machen damit die Durchfhrung
zum Kinderspiel.
Auch CDT bringt ein solches Refaktorisierungsangebot mit. Dabei
hat das Repertoire seit Version 5.0 deutlich an Funktionalitt hinzuge-
wonnen. Wie es schon bei vollstndiger Content-Assistenz der Fall war,
setzen die meisten in CDT angebotenen Refactoring-Funktionen einen
aktivierten Indexer voraus, um ssiges Arbeiten zu gewhrleisten. Aus
dem breitem Spektrum mglicher Refaktorisierungen nden derzeit die
folgenden Untersttzung:
das Umbenennen von Ressourcen
das Umbenennen von Bezeichnern fr allerhand assoziierbare Ty-
pen, darunter Makros, Variablen, Funktionen, Strukturen, Klassen
und Attributen. Das Umbenennen von Sprungmarken wird hinge-
gen (noch) nicht untersttzt, was sicherlich mit ihrer seltenen Ver-
wendung zu tun hat.
das Extrahieren von Konstanten oder lokalen Variablen
das Extrahieren einer Funktion oder einer Methode
das Verstecken von nicht ffentlich benutzten Methoden
das Erzeugen von Zugriffsfunktionen, d. h. Settern und Gettern, fr
Klassenattribute
das Erzeugen eines Gerstes beim Implementieren von Methoden
Mchten Sie zustzlich zu den im weiteren Verlauf vorgestellten, durch
CDT bereitgestellten Refaktorisierungen mehr zum Thema erfahren, so
sei Ihnen [7] ans Herz gelegt. Neben einer nahezu vollstndigen Auis-
tung von Refaktorisierungsmglichkeiten und detaillierten Erluterun-
gen zu ihrem Sinn und Zweck nden Sie dort auch Verweise zu weiteren
Adressen und Bchern.
3.9.1 Ressourcen umbenennen
In Eclipse wird das Umbenennen von Ressourcen, das Sie z. B. mit dem
Kontextmeneintrag Rename... bewerkstelligen, als Refaktorisierungs-
prozedur angeboten. Leider geht die Untersttzung seitens CDT im
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
140 3 Projekte erstellen und bearbeiten
Moment jedoch nicht ber das triviale Umbenennen hinaus, d. h., wenn
Sie eine Header-Datei umbenennen mchten, so mssen Sie die Stellen,
die diese Dateien einbinden, auch manuell modizieren. Hier kann man
bei den CDT-Entwicklern sicherlich Verbesserungswnsche anmelden.
3.9.2 Bezeichner umbenennen
Besser bestellt ist es hingegen um das Umbenennen von Bezeichnern.
Um einen Bezeichner neu zu benennen, bewegen Sie den Cursor auf
den in Frage kommenden Bezeichner, unabhngig davon, ob er als De-
klaration oder Referenz in Erscheinung tritt. Benutzen Sie dann den
Menpunkt Refactor > Rename.... Dieselbe Funktionalitt bringen Sie
auch mit Hilfe des Kontextmens, wie in Abbildung 3-43 ersichtlich ist,
oder, ohne die Hnde von der Tastatur zu nehmen, mit Hilfe der Tas-
tenkombination ALT+SHIFT+R hervor. Sie knnen den Bezeichner auch
im Outline-View selektieren und das dortige Kontextmen in Anspruch
nehmen. Bekanntlich fhren eben viele Wege nach Rom.
Abb. 3-43
Kontextmeneintrag,
mit dessen Hilfe Sie
einen Bezeichner neu
benennen.
Je nachdem, ob der Scope des vom Bezeichner assoziierten Typs loka-
ler oder globaler Natur ist, erscheinen zwei sich etwas unterscheidende
Fenster.
Lokalen Bezeichner umbenennen
Das Umbenennen eines lokalen Bezeichners ist weniger aufwendig, da
oft nur eine Funktion, hchstens aber nur eine Quelltextdatei betroffen
ist. Dementsprechend kommt der Dialog spartanisch daher und bietet
bis auf das Textfeld fr den Bezeichner nur noch ein paar Buttons, wie
in Abbildung 3-44 zu sehen ist.
Einer Erklrung bedarf lediglich der Preview-Button: Er erlaubt es,
die durch das Refactoring verursachten Vernderungen vor ihrer ei-
gentlichen Anwendung anzuschauen, zu bewerten und gegebenenfalls
zu verwerfen.
In Abschnitt 3.5.11 wurde der Text size durch den Text space
ersetzt, wobei man beim Gebrauch insgesamt vorsichtig sein soll, da
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.9 Refaktorisierung 141
Abb. 3-44
Eine lokale Variable
umbenennen
dieser Vorgang schnell fehlerhafte nderungen durchfhrt und zudem
bei allen potenziell betroffenen Dateien eine manuelle Anwendung be-
ntigt. Diese Umbenennung wollen wir jetzt mit Hilfe der Refaktori-
sierungsfunktion rckgngig machen, was um einiges leichter von der
Hand geht.
Bewegen Sie den Cursor innerhalb der Datei directory.cpp auf den
Bezeichner space, der eine lokale Variable der Methode getSpace() re-
prsentiert. Initiieren Sie jetzt das Umbenennen mit ALT+SHIFT+R. Ge-
ben Sie im Dialog, wie in Abbildung 3-44 dargestellt, den neuen (alten)
Bezeichner fr die Variable, also size, ein und bettigen Sie anschlie-
end OK. Da die Funktion recht bersichtlich ist, bentigen wir keine
Vorschau. berzeugen Sie sich, ob tatschlich die Namen der Variablen
an den richtigen Stellen gendert wurden. Sollten Sie einmal mit dem
Ergebnis nicht zufrieden sein, so knnen Sie mit der Undo-Funktion die
durchgefhrte Operation immer noch rckgngig machen.
Globale Bezeichner umbenennen
Das Umbenennen eines globalen Bezeichners, z. B. eines Namens einer
globalen Funktion oder eines Namens einer Klasse, ist umfassender, da
die nderung in der Regel nicht nur eine einzige Datei betrifft. Dement-
sprechend bietet der Dialog frs Umbenennen, wie in Abbildung 3-45
ersichtlich, ein wenig mehr Mglichkeiten.
Mit Scope of refactoring legen Sie den Wirkungsbereich der Opera-
tion fest. Sie haben die Auswahl zwischen:
all projects, um die nderung in allen durch CDT verwalteten Pro-
jekten durchzufhren,
related projects, um die nderung in allen referenzierten oder refe-
renzierenden Projekten durchzufhren,
project, um die nderung lediglich in den Dateien der eigentlichen
Projekte durchzufhren, sowie
working set, wodurch Eclipse die nderung in einem anzugebenden
Working-Set vornimmt. Sinnvollerweise sollte das aktuelle Projekt
dort enthalten sein, obgleich es nicht erzwungen wird.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
142 3 Projekte erstellen und bearbeiten
Abb. 3-45
Einen globalen
Bezeichner (hier
Methodennamen)
umbenennen
Mit Hilfe der Checkboxen legen Sie den lokalen Wirkungsbereich der
Operation fest. So knnen die nderungen in strukturierten Stellen des
Quelltextes (source code), in Kommentaren (comments) oder in Ma-
krodenitionen (macro denitions) stattnden. Zu beachten ist jedoch,
dass die Kommentar-Option lediglich eine normale Suchen/Ersetzen-
Funktion innerhalb von Kommentaren darstellt und deswegen mit be-
sonderer Vorsicht zu genieen ist, falls der zu ersetzende Text in ver-
schiedenen Kontexten benutzt wird.
Der OK-Button ist gnzlich gesperrt. Da die durchzufhrende n-
derung durch den groen Wirkungsbereich durchaus Schaden bei nicht
bedachten Dateien an nicht bedachten Stellen anrichten kann, ist ein
Begutachten der nderungen in der Vorschau obligatorisch. Mit Klick
auf Preview erscheint nach kurzer Denkpause das Vorschaufenster.
Um das Umbenennen globaler Bezeichner in Aktion zu sehen, mar-
kieren Sie einmal den getSpace-Bezeichner, ganz gleich, ob er als Refe-
renz (in dirscanner.cpp), Deklaration (in directory.hpp) oder Denition
(in directory.cpp) Verwendung ndet. ffnen Sie den Umbenennen-
Dialog (z. B. mit ALT+SHIFT+R). ndern Sie den Text bei Rename to
von getSpace in getSize. Da wir den Text auch in einem Kommentar
benutzt haben, aktivieren Sie am besten neben der Option source co-
de auch die Option comments. Benutzen Sie schlielich den Preview-
Button.
Nach einer kurzen Denkpause sollte auf Ihrem Bildschirm ein Fens-
ter wie in Abbildung 3-46 zu sehen sein. Dieses taucht immer dann auf,
wenn sich Probleme beim Umbenennen anbahnen. Hier mchte es uns
auf den Treffer innerhalb eines Kommentars aufmerksam machen. Wie
oben erwhnt, gibt es bei Treffern in Kommentaren keinen Bezug zum
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.9 Refaktorisierung 143
Abb. 3-46
Probleme beim
Umbenennen
Kontext, so dass eine derartige Umbenennung immer berprft werden
soll. An dieser Stelle knnen Sie den Vorgang mit Cancel beenden, mit
Back zum vorhergehenden Dialog zurckgehen oder mit Continue den
Vorgang fortsetzen. Da wir ber das Problem Bescheid wissen, whlen
wir letzte Option.
Daraufhin erscheint das eigentliche Vorschaufenster, das hier in Ab-
bildung 3-47 dargestellt ist, und in dem Sie alle nderungen Stck fr
Stck durchsehen knnen. Im oberen Teil sind alle nderungen ber-
blickartig in einer kleinen Hierarchie zusammengefasst, whrend sich
im unteren Teil die Details fr den gerade ausgewhlten Eintrag ben-
den. Im Vergleichsfeld, das schon aus dem letzten Abschnitt bekannt
ist, sehen Sie links den bisherigen Zustand und rechts den vermeintlich
neuen.
Haben Sie sich vergewissert, dass auch alles so geschieht, wie von
Ihnen gedacht (in Bezug auf unser Beispiel ist das der Fall, wenn der
Inhalt des auf Ihrem Bildschirm dargestellten Fensters der Abbildung
hnelt), bettigen Sie OK, ansonsten knnen Sie den Vorgang mit Can-
cel abbrechen. Wie oben machen Sie die Operation mittels der Undo-
Funktion rckgngig, allerdings nicht ohne einen weiteren Dialog wie
in Abbildung 3-48 zu Gesicht zu bekommen, falls die nderungen mehr
als eine Datei betreffen.
3.9.3 Konstanten extrahieren
Eine weitere Refaktorierungsmethode bietet CDT mit der Funktion Ex-
tract Constant... an. Hiermit knnen Sie Literale, wie Ganzzahlen oder
Zeichenketten, im gesamten Quelltext durch symbolische Konstanten
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
144 3 Projekte erstellen und bearbeiten
Abb. 3-47
In der Vorschau
werden alle geplanten
nderungen im Detail
aufgezeigt.
Abb. 3-48
Warnung, die
erscheint, falls sich
eine Undo-Operation
auf mehrere Dateien
auswirkt.
ersetzen. Markieren Sie hierfr das Literal und whlen Sie den Eintrag
Refactor > Extract Constant... aus dem Kontextmen des Texteditors
oder benutzen Sie ALT+C auf der Tastatur. Es erscheint ein Fenster, in
dem Sie nach dem Namen der neuen Konstanten gefragt werden. Mit
Klick auf Next > wird dann das Vorschaufenster sichtbar, in dem Sie
die nderungen wieder genauestens auf Richtigkeit inspizieren knnen,
bevor Sie sie mit Finish akzeptieren.
3.9.4 Lokale Variablen extrahieren
hnlich zur eben vorgestellten Refaktorisierung, funktioniert das Ex-
trahieren von lokalen Variablen. Anstelle von literalen knnen aller-
dings Ausdrcke selektiert werden, deren Ergebnis in einer neuen lo-
kalen Variable zugewiesen wird. Die Funktion verbirgt sich hinter dem
Meneintrag Refactor > Extract Local Variable....
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.9 Refaktorisierung 145
3.9.5 Eine Funktion oder Methode extrahieren
Um die bersicht ber den Quelltext zu behalten, wird grundstzlich
empfohlen, mglichst kurze Funktionen oder Methoden zu schreiben.
Bekanntlich wchst der Code eines Abschnitts im Laufe der Zeit jedoch
stetig. Es erscheint dann angebracht, die Modularitt zu erhhen, in-
dem Teile des Codes in sinnvoll benannte Funktionen oder Methoden
extrahiert werden.
Zustzlich zum geschilderten Anwendungsfall ist das Extrahieren
von Codestellen auch dann besonders ntzlich, wenn Sie Teile vom
Quelltext von einer Funktion in eine andere Funktion mit CopynPaste
bertragen wollen. Solche Codeduplikationen sollten in der Regel tabu
sein, denn nderungen an einer Stelle sind dann an allen Stellen vorzu-
nehmen. Frher oder spter verliert man die bersicht.
Markieren Sie den Bereich, den Sie in einer Funktion oder Methode
auslagern wollen. Der Bereich sollte einen validen Codeblock reprsen-
tieren, d. h., dass sich die Anzahl der geffneten geschweiften Klam-
mern mit der Anzahl der geschlossenen deckt. Whlen Sie anschlieend
den Meneintrag Refactor > Extract Function... aus, so dass nach kur-
zer Denkpause der in Abbildung 3-49 illustrierte Dialog auf den Bild-
schirm zu sehen sein sollte.
Hier geben Sie, je nachdem ob sich der markierte Bereich in einer
Methode oder Funktion befand, bei Method name bzw. Function na-
me den Bezeichner des herausgezogenen Programmabschnitt an. Wird
der Programmabschnitt in eine Methode berfhrt, dann knnen Sie
deren Sichtbarkeit gleich darunter in der Auswahl zu Access modier
spezizieren.
In der Tabelle des Kastens Return value denieren Sie, wie die
Variablen zu retournieren sind, die im herausgezogenen Programmab-
schnitt modiziert und im weiteren Ablauf referenziert werden. Die ge-
bruchlichste Vorgehensweise ist es, die Rckgabe des Wertes einer Va-
riablen mit der return-Anweisung zu verwirklichen. Hierfr aktivieren
Sie den Radio-Button in der Return-Spalte der entsprechenden Varia-
ble. Folglich wird nach der Refaktorisierung das Ergebnis der Funktion
vom Aufrufer dieser Variablen zugewiesen. Da auf diese Weise nur ei-
ne einzige Variable in Betracht gezogen wird, knnen Sie den weiteren
Variablen einen Call-by-Reference-Status mitgeben, wofr die gleichna-
mige Spalte Auswahlboxen bereitstellt. Bei eingeschalteter Option wird
die bergebene Variable dann im Kopf als Referenz deklariert. Falls kei-
ne der beiden Rckgabevarianten aktiviert ist, so sind die innerhalb der
extrahierten Funktion vorgenommenen Modikationen fr den aufru-
fenden Kontext belanglos. Das hat fast immer eine Bedeutungsnde-
rung des Quelltextes zur Folge, wenn die Variablen unterhalb der ex-
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
146 3 Projekte erstellen und bearbeiten
Abb. 3-49
Extrahieren von
Funktionen oder
Methoden
trahierten Stelle benutzt werden. Eclipse weist Sie allerdings auf dieses
Problem hin.
Sind Sie mit den Angaben zufrieden, dann knnen Sie gleich mit
Finish die Refaktorisierung durchfhren lassen. Besser wre es jedoch,
sich zuvor anhand der Vorschau von der Richtigkeit des Vorschlages
zu berzeugen, wofr Sie auf den Button Next > klicken, so dass die
bereits bekannte Vergleichsseite erscheint. Wie in Abbildung 3-50 auf
Seite 147 ersichtlich, werden Kommentare sowie die Klassendenition
dabei nicht auer Acht gelassen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.9 Refaktorisierung 147
Abb. 3-50 Refaktorisierung begutachten. Wie im oberen Teil ersichtlich, werden beim Extrahieren von Metho-
den nicht nur nderungen im Code vorgenommen, sondern auch in der Klassendenition.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
148 3 Projekte erstellen und bearbeiten
3.9.6 Methoden verstecken
Mit Hilfe der Funktion Hide Method... knnen Sie ffentliche Metho-
den verstecken, wobei die Sichtbarkeit der Methode ganz einfach auf
private gesetzt wird. Es spielt keine Rolle, ob Sie eine Referenz, eine
Deklaration oder die Denition der so zu behandelnden Methode aus-
whlen.
Besondere Aufmerksamkeit sollten Sie bei Benutzung dieser Funkti-
on der bersicht und der Vorschau widmen. Es ist nmlich so, dass Sie
zum Beispiel auch eine Methode verstecken knnen, die von anderen
Codeteilen auerhalb der Klasse aufgerufen werden. Denitionsgem
wre die durchgefhrte Operation gar keine richtige Refaktorisierung,
da der Quelltext anschlieend in einem nicht bersetzbaren Zustand
vorlge. Tritt ein solcher Fall ein, macht ein Warnhinweis, wie er in
Abbildung 3-51 zu sehen ist, diesen Umstand kenntlich.
Abb. 3-51
Hinweis auf eine
potenziell gefhrliche
Operation
3.9.7 Refaktorisierungshistorie
Refaktorisierungen laufen immer nach einem denierten Schema ab:
Eine Variable x wird nach y umbenannt, ein Codeblock der Funktion
foo() wird in eine neue Funktion bar() berfhrt usw. Die durch Eclipse
oder CDT durchgefhrten Refaktorisierungen knnen deshalb leicht in
strukturierter Form gesammelt werden. Benutzer betrachten diese dann
anhand einer durch Eclipse eigens bereitgestellten Historienfunktion.
Zugriff auf diese Historie erhalten Sie ber die Eigenschaften des
Projekts; sicherlich etwas ungewhnlich anmutend, da eine Refakto-
risierung nicht unbedingt auf Anhieb als Eigenschaft einer Ressource
identiziert werden kann. Sobald eine von der Historienfunktion unter-
sttzte Refaktorisierung im Projekt vorgenommen worden ist, erscheint
in den Eigenschaften des Projekts ein zustzlicher Eintrag Refactoring
History, zu sehen in Abbildung 3-52.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.10 Parser- und Indexerdetails 149
Abb. 3-52
Refaktorisierungs-
Historie
3.10 Parser- und Indexerdetails
Der Indexer ist ein integraler Bestandteil, den einige der bisher vorge-
stellten Hilfsmittel fr eine ordnungsgeme Funktion bentigen. Nicht
immer arbeiten diese Komfortfunktionen einwandfrei, was in vielen
Fllen auf ein Problem mit dem Indexer zurckzufhren ist. Das soll
Motivation genug sein, um in diesem Abschnitt den Parser und Indexer
nher zu beleuchten.
3.10.1 Parser
Der Umfang der C- und C++-Programmiersprachen ist sehr komplex.
Neben der C/C++-Syntax existieren noch die Direktiven des Prprozes-
sors, wozu die allseits beliebten Makros gezhlt werden knnen. Die
Direktiven folgen einer Syntax, die rein gar nichts mit der eigentlichen
C/C++-Syntax zu tun hat. In der Regel werden diese vor dem eigentli-
chen bersetzungsvorgang evaluiert. Der Parser von CDT kommt mit
diesen Spezialitten aber gut zurecht. Betrachten wir ein (zugegebener-
maen sehr knstliches) Beispiel. Fgen Sie in ein Projekt Ihrer Wahl
(gegebenenfalls erstellen Sie ein neues) eine Quelldatei mit folgendem
Inhalt hinzu:
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
150 3 Projekte erstellen und bearbeiten
#include <stdio.h>
#ifdef DEBUG
void message(char
*
message)
{
puts(message);
}
#else
void message(char
*
message)
{
}
#endif
int main(int argc, char
**
argv)
{
message("Programmstart");
return 0;
}
Die Zeilen, die durch bedingte bersetzung nicht beachtet werden, sind
(standardmig) grau hinterlegt, wie in Abbildung 3-53 dargestellt, und
knnen somit auf den ersten Blick erkannt oder besser ignoriert wer-
den. Auch weist ein grauer Funktionseintrag auf die Existenz von aus-
geschlossenen Code hin. Sobald Sie das Prprozessor-Makro DEBUG mit
#define DEBUG
in der ersten Zeile denieren, wechselt der grau hinterlegte Bereich.
Bleibt noch anzumerken, dass beimEditieren in solchen ausgeschalteten
Bereichen die Content-Assistenz nur bedingt funktioniert.
Coding-Style: Bessere bedingte bersetzung
Ein groer Nachteil der hier verwendeten Variante ist, bedingt kompilier-
ten Code komplett ber den Prprozessor zu realisieren, so dass der
Compiler nur den einen Pfad zu Gesicht bekommt.
Moderne Compiler besitzen allerdings ausgeklgelte Optimierungstech-
niken. Eine recht pfge Idee ist es daher, auf die Prprozessor-
Anweisungen in Funktionen zu verzichten und stattdessen auf das
Sprachkonstrukt if auszuweichen. Anstelle von
#ifdef MACRO
/
*
Do something
*
/
#endif
schreiben Sie
if (MACRO) { /
*
Do something
*
/ }
Wohlgemerkt funktioniert dies nur innerhalb von Funktionen oder Metho-
den.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.10 Parser- und Indexerdetails 151
Abb. 3-53
Code, der durch
bedingte bersetzung
ausgeschlossen wird,
ist grau hinterlegt.
3.10.2 Indexeroptionen anpassen
Natrlich kann ein Index je nach Gre des Projekts sehr umfangreich
werden. Dabei wchst die Zeit, die fr dessen Erstellung bentigt wird.
Zwar arbeitet der Indexer im Hintergrund, der Prozess kann aber trotz-
dem den Arbeitsuss betrchtlich stren. Aus diesem Grund besteht die
Mglichkeit, einige Parameter des Indexers an die eigenen Bedrfnisse
anzupassen
18
.
Um die Arbeitsweise des Indexers zu erlutern, werden wir uns ei-
nem Beispiel zuwenden, das abermals nur demonstrativen Charakter
hat. Hierfr legen Sie am besten ein neues Projekt an. Erstellen Sie eine
Datei header.h mit folgendem Inhalt:
#ifndef HEADER
_
H
_
#define HEADER
_
H
_
#ifdef NEEDS
_
S1
18
Die Mglichkeit, aus verschiedenen Indexern auszuwhlen, ist seit CDT
7.0 entfallen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
152 3 Projekte erstellen und bearbeiten
#define S1
_
DEFINED
struct s1
{
int field
_
of
_
s1;
};
#endif
#ifdef NEEDS
_
S2
#define S2
_
DEFINED
struct s2
{
int field
_
of
_
s2;
};
#endif
#endif /
*
HEADER
_
H
_
*
/
Erstellen Sie anschlieend eine Datei file.c mit folgendem Inhalt:
Listing 3.4
le.c
#include "header.h"
#ifdef S1
_
DEFINED
#endif
#ifdef S2
_
DEFINED
#endif
int main(int argc, char
**
argv)
{
return 0;
}
Indexeroptionen drfen sowohl projektbergeifend als auch projekts-
pezisch deniert werden. Die erste Variante ndet sich in den globa-
len Voreinstellungen auf der Seite C/C++ > Indexer wieder, die auch in
Abbildung 3-54 dargestellt ist. Die zweite Variante lsst sich ber die
Eigenschaften des Projekts realisieren, wobei hier eine etwas kleinere
Teilmenge der Option angeboten wird.
Ganz entscheidend ist sebstverstndlich die Option Enable indexer, Den Indexer ein- und
ausschalten womit Sie den Indexer entweder ein- oder ausschalten knnen. Im Fol-
genden werden beide Modi und die Auswirkungen auf die Entwick-
lungsumgebung diskutiert.
Bei ausgeschaltetemIndexer ist es nicht mglich, eine der hherwer- Ohne Indexer arbeiten
tigen Funktionen zu benutzen, wozu z. B. die Suche nach Referenzen ge-
hrt. Andere Hilfestellungen, die auf Quelltextebene agieren, etwa der
Outline-View, das Syntax Highlighting oder die Content-Assistenz, sind
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.10 Parser- und Indexerdetails 153
Abb. 3-54
Indexer-Parameter in
den globalen
Voreinstellungen
lediglich eingeschrnkt benutzbar, da CDT die Header-Dateien nicht
parst. Allerdings lsst sich in den globalen Voreinstellungen auf der Sei-
te C/C++ mit der Option Follow unindexed header les when produ-
cing the outline view ein Verhalten angeben, bei dem nicht indizierte
Header-Dateien bei ihrem Auftreten im Quelltext eingelesen und ge-
parst werden, wenn dies notwendig erscheint. Dies geht allerdings mit
einer Beeintrchtigung des Arbeitsusses einher, da CDT bei jeder noch
so kleinen nderung einer Datei nicht nur die Datei selbst, sondern
auch die dort referenzierten Header-Dateien einliest, parst und auswer-
tet.
Wir wenden uns jetzt dem Beispiel zu und nehmen an, die eben
erwhnte Option sei abgeschaltet. Beim Betrachten der Datei file.c
im Quelltexteditor sind, ganz wie erwartet, beide bedingte berset-
zungsabschnitte als inaktiv gekennzeichnet. Fgen wir vor den Include-
Anweisungen etwa
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
154 3 Projekte erstellen und bearbeiten
#define NEEDS
_
S1
ein, dann bleibt das Bild so bestehen, was eben daran liegt, dass Header-
Dateien nicht eingelesen worden sind. ndern wir die zuletzt erwhnte
globale Einstellung, so sehen wir sofort, dass der Codeblock nicht ln-
ger als inaktiv gekennzeichnet wird. Sobald Sie
#define NEEDS
_
S2
hinzufgen, ist auch der zweite Codeblock nicht mehr als inaktiv ge-
kennzeichnet. Es werden jetzt alle Funktionen so akkurat wie mglich
untersttzt. Dies wird jedoch nur dadurch ermglicht, weil CDT die
Datei header.h jedes Mal neu analysiert. Wie Sie sich jetzt vorstellen
knnen, hat dies bei groen Projekten, die viele Header-Dateien ver-
wenden, fr ein ssiges Arbeiten mehr als nur unangenehme Folgen.
Lassen wir das Sammeln von Deklarationen und Referenzen von Mit dem Indexer
arbeiten Bezeichnern auer Acht, versucht ein Indexer einen Kompromiss zwi-
schen beiden geschilderten Extremen einzugehen, d. h. mit oder ohne
angeschalteten Header-Datei-Option. Dieses gelingt von CDT-Version
zu CDT-Version besser. Die Einschrnkungen, den der bis CDT 6.0 als
Fast Indexer bezeichnete Indexer unterlag und die z. B. zu Unstimmig-
keiten fhrten, wenn eine Header-Datei von verschiedenen Quellen mit
unterschiedlichen Inhalten inkludiert wurde, existieren fr die meisten
Flle nicht mehr.
Wir knnen diese Eigenschaft leicht anhand des Beispiels berpr-
fen. Stellen Sie zunchst sicher, dass der Indexer angeschaltet ist. n-
dern Sie dann den Quelltext so um, dass zu Beginn das Makro NEEDS
_
S1
deniert ist, nicht aber NEEDS
_
S2. Benutzen Sie den Meneintrag Index
> Rebuild, um den Index neu erstellen zu lassen. Daraufhin sollte nun
(ganz wie erwartet) der erste Block als aktiv und der zweite als inaktiv
gekennzeichnet sein. Wenn Sie die Denition des ersten Makros ent-
fernen, indem Sie beispielsweise die Zeile mit einem C++-Kommentar
voranstellen, dann wird die Darstellung wie erwartet angepasst. Dies
war bei CDT 5.0 z. B. noch nicht der Fall und Sie waren gezwungen,
den Index manuell neu zu erstellen.
Noch problematischer war der Fall, bei dem zwei Quelltextdatei-
en dieselbe Header-Datei einbeziehen, die zudem durch Makros ver-
schiedene Elemente denieren. Nehmen wir einmal an, dass in file.c
das Makro NEEDS
_
S1 deniert werden wrde, bevor header.h inkludiert
wird. Weiterhin gbe es noch eine Datei file2.c, in der das Makro
NEEDS
_
S1 nicht deniert, header.h aber dennoch inkludiert ist. Der In-
dexer von CDT 5.0 hatte bei dieser Situation seine Schwierigkeiten,
die dazu fhrten, dass, je nachdem welche Datei nun gerade eingelesen
wurde, ebenso die Auswertung der anderen Datei neu vorgenommen
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.10 Parser- und Indexerdetails 155
wurde und zu einem anderen Ergebnis fhrte. Der Indexer von CDT
7.0 arbeitet hingegen ganz wie erwartet.
3.10.3 Weitere Indexer-Parameter
Im Kasten Indexer Options der Indexereinstellungen (siehe Abbil-
dung 3-54) knnen Sie entscheiden, ob der Indexer auf alle Dateien
angesetzt werden soll, unabhngig davon, ob sie direkt oder indirekt
fr das bersetzen eine Rolle spielen. Weitere Optionen bestimmen, ob
bestimmte Arten von Referenzen ignoriert werden sollen oder nicht.
Im untersten Eingabefeld Files to index up-front geben Sie die Header-
Dateien an, die auf jeden Fall vom Indexer eingelesen werden, und zwar
vor allen anderen.
ImKasten Index strategy knnen Sie bestimmen, ob der Index ber-
haupt automatisch aktualisiert wird und ob das nach jeder Dateinde-
rung geschehen soll. Darunter whlen Sie im Kasten Build congura-
tion for the indexer aus, welche Build-Konguration fr den Indexer
vorgesehen ist. Entweder kann dies die aktive oder eine spezielle, in
den Eigenschaften des Projekts angegebene sein.
Schlielich knnen Sie im Kasten Cache limits mit Hilfe der ersten
beiden Eingabefelder den Speicher limitieren, den die Indexerdatenbank
in Anspruch nimmt. Dies geschieht sowohl relativ zur Java-eigenen ma-
ximalen Gre des Heap-Speichers als auch unter der Angabe eines Ab-
solutwertes, wobei die Angabe mit dem kleineren Wert der ausschlag-
gebende Faktor ist. Fr das Refactoring und den Full Indexer ist des
Weiteren die Angabe der maximalen Speichergre vonnten, die fr
den Header-Datei-Cache benutzt wird.
3.10.4 Indexdatenbank analysieren
Im View C/C++-Index knnen Sie auf leichte Weise die Indexdatenbank
durchforsten. Abbildung 3-55 zeigt Ihnen, wie der View aussieht. Dort
ist gerade der Index fr das dirscanner-Projekt sichtbar.
Angezeigt werden nur Elemente, die ihren Ursprung im Projekt
haben. Sollen hingegen auch Elemente sichtbar sein, die in externen
Header-Dateien deklariert werden, hilft Ihnen der Button Show Exter-
nally Dened Symbols weiter. Die Anzahl externer Elemente ist in der
Regel aber sehr hoch.
Das Kontextmen hlt je nach Ressourcentyp unterschiedliche
Kommandos parat, wobei die meisten schon bekannt sind. Das Kon-
textmen einer Projektressource enthlt jedoch zustzlich den Eintrag
Count Symbols, mit dem Sie eine Statistik des Indexes zu Gesicht be-
kommen. Abbildung 3-56 zeigt ein Beispiel.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
156 3 Projekte erstellen und bearbeiten
Abb. 3-55
C/C++ Index-View
3.10.5 Probleme mit dem Indexer
Manchmal weigert sich CDT, eine Funktion auszufhren, wie z. B. das
Springen zu einer bestimmten Funktionsdeklaration. Nicht selten liegt
die Ursache in einem Problem mit dem Indexer. Wenn Sie ein Missver-
halten feststellen, obwohl der Indexer eingeschaltet ist, sollten Sie zu-
nchst einmal schauen, ob das Projekt korrekt indiziert wurde. Der im
letzten Abschnitt beschriebene View C/C++ Index kann hier Aufschluss
geben. Ist die gewnschte Funktion berhaupt indiziert?
Besonders hilfreich, wenn es sich beim Problem um externe De- Nicht gefundene
System-Header-
Dateien
auisten
nitionen handelt, ist die Mglichkeit, im gesamten Projekt nach nicht
gefundenen Header-Dateien zu suchen. Die Funktion knnen Sie ber
den Kontextmeneintrag Index > Search for Unresolved Includes star-
ten. Haben Sie eine solchen Fall entdeckt und handelt es sich dabei
um eine System-Header-Datei, dann knnen Sie in den Projekteigen-
schaften (Kontextmen Properties ber dem Projekt), in der Kategorie
C/C++ General > Paths and Symbols den Suchpfad fr Include-Dateien
ndern. Die Vorgehensweise wurde auf Seite 102 kurz beschrieben.
Wenn es sich um eine Header-Datei oder um eine Denition han- Quelltextpfade
hinzufgen delt, die sich im eigenen Projekt bendet, dann hilft Ihnen die Opti-
on weiter, alle vom Indexer bearbeiteten Dateien mit einer Dekoration
Abb. 3-56
Statistik des Indexes
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.11 Views der C/C++-Perspektive 157
versehen zu lassen, so wie es in Abschnitt 3.12 beschrieben ist. Wird
Ihre Datei unerwartet nicht mit einer solchen Dekoration versehen,
dann liegt es hchstwahrscheinlich daran, dass das Verzeichnis nicht
im Quelltextpfad eingeschlossen ist, den Sie in den Projekteigenschaf-
ten C/C++ General > Path and Symbols imKarteireiter Source Location
angeben knnen.
3.11 Views der C/C++-Perspektive
Dieser Abschnitt beschreibt ausfhrlich alle zur C/C++-Perspektive ge-
hrenden Views, die in der Bearbeitungsphase eine Rolle spielen.
3.11.1 Outline
Den Outline-View haben Sie bereits in Kapitel 2 kennengelernt; er wird
zur Erinnerung in Abbildung 3-57 dargestellt. Er ist einer der ntz-
lichsten Views, denn in ihm lsst sich die Struktur des aktuell in Be-
arbeitung bendlichen Quelltextes erkennen. Dabei nden so ziemlich
alle hheren Strukturelemente Platz, die durch markante Symbole und
eine Bezeichnung reprsentiert werden. Die Symbole sollen Ihnen ei-
ne schnelle Klassikation der Elemente erlauben und stimmen mit den
bereits in Abschnitt 3.1.3 vorgestellten Piktogrammen berein. Neben
dieser berblicksfunktion hilft Ihnen der View auch bei der Navigati-
on innerhalb des Quelltextes: Sobald Sie auf ein Element klicken, wird
dieses auch im Quelltexteditor selektiert.
Abb. 3-57
Der Outline-View mit
aufgeklapptem
Pulldown-Men
Anzumerken ist dabei noch, dass Sie besonders die Include-Elemente
anschauen sollten. Sind diese nmlich mit einem Warnsymbol deko-
riert, so konnte die Include-Datei nicht gefunden werden. Die Content-
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
158 3 Projekte erstellen und bearbeiten
Assistenz und weitere Funktionen funktionieren dann nicht wie erwar-
tet. Ebenso sind Funktionen, in denen ein bersetzungsfehler vorliegt,
durch ein Fehlersymbol dekoriert.
Mit Hilfe der zum View gehrenden Buttons knnen Sie diverse
Einstellungen ttigen, die die Art und die Darstellungsweise beeinus-
sen:
Sort sortiert die Eintrge gleichen Typs alphabetisch.
Hide Fields versteckt alle Elemente oder Attribute von Strukturen
bzw. Klassen.
Hide Static Members versteckt alle statischen Attribute.
Hide Non-Public Members versteckt alle nicht ffentlichen Attri-
bute.
Hide Inactive Elements versteckt alle nicht aktiven, d. h., mittels
Prprozessor ausgeschlossenen Teile des Codes.
Sie haben im Pulldown-Men Zugriff auf weitere Funktionen, ber die
die Anzeige angepasst werden kann. Whrend es die Eintrge Group
Methods, Group Namespace, Group Macros und Group Includes er-
mglichen, Elemente gleichen Typs innerhalb des Views als Gruppe er-
scheinen zu lassen, knnen Sie mit Filters... ganz spezielle Typen oder
Bezeichner nach einem selbst whlbaren Muster ausblenden. Ist die Op-
tion Link With Editor aktiviert, dann wird im View automatisch das
Element hervorgehoben, das Sie gerade im Quelltexteditor bearbeiten.
3.11.2 Include Browser
Der Include Browser-View bezieht sich auf eine Referenzdatei. Er er-
mglicht Ihnen je nach Modus den Zugriff auf die in der Datei einge-
bundenen Dateien oder auf die Dateien, die die Referenzdatei einbin-
den. Ntzlich ist der View vor allem, weil dabei die komplette Hierar-
chie dargestellt werden kann. Das heit, bindet eine angezeigte Datei
weitere Dateien ein (oder wird eine angezeigte Datei durch andere Da-
teien eingebunden), so knnen Sie diese zur Ansicht bringen, indem Sie
den zugehrigen Eintrag im Baum aufklappen.
Die Ausgangsdatei des Views legen Sie fest, indem Sie mittels
DragnDrop eine C/C++-Quelltextdatei nehmen und auf dem View fal-
len lassen. Sie nden auch einen Eintrag Show In > Include Browser im
Kontextmen des Editors, mit dem Sie den Kontext des Views anpas-
sen knnen. Als Beispiel schieben Sie einmal die Datei directory.cpp in
den View. Sie drften dann nach dem Aufklappen einiger Dateien ei-
ne Ansicht erhalten, die hnlich zu der ist, die Sie in Abbildung 3-58
erkennen knnen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.11 Views der C/C++-Perspektive 159
Abb. 3-58
Im Include
Browser-View kann die
Hierarchie der
eingebundenen
Header-Dateien einer
Quelltextdatei
durchforstet werden.
Die enthaltenen Eintrge sind zum Teil unterschiedlich ausgezeichnet.
Sie knnen sofort erkennen, ob ein Eintrag als projektspezische Da-
tei oder als eine System-Header-Datei eingebunden wird, denn letztere
werden durch eckige Klammern im Dateisymbol gekennzeichnet. Ein
Pfeil gibt an, ob die tiefer liegenden Dateien aktiv eingebunden wer-
den (Pfeil nach unten) oder ob sie referenzierende Dateien sind (Pfeil
nach oben). So haben Sie schnell im Blick, in welchem Modus Sie sich
benden.
Selbstverstndlich knnen Sie im View jede angezeigte Datei dop-
pelklicken, um diese im Editor zu ffnen. Das funktioniert auch fr
Dateien, die nicht direkt zum Projekt gehren (z. B. System-Header-
Dateien). Daneben knnen Sie noch andere ntzliche Funktionen im
Kontextmen vornden.
Open Include setzt den Texteditor an die Stelle, die zum Eintrag
fhrte.
Focus On richtet den View auf die selektierte Include-Datei aus.
Im View stehen einige Buttons zur Verfgung, mit denen Sie die Art der
dargestellten Eintrge beeinussen, innerhalb der Hierarchie navigieren
oder den Modus umschalten knnen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
160 3 Projekte erstellen und bearbeiten
Show Next Include. Die nchste auf gleicher Ebene liegende
Include-Anweisung wird im Editor markiert.
Show Previous Include. Die vorherige auf gleicher Ebene liegende
Include-Anweisung wird im Editor markiert.
Hide System Includes. Wenn diese Option aktiv ist, dann werden
System-Header-Dateien nicht angezeigt.
Hide Includes from Inactive Code. Aktivieren Sie diese Option,
wenn Include-Dateien, die innerhalb ausgeschalteter Codestellen
eingebunden sind, versteckt werden sollen.
Show Includers. Es werden inkludierende Dateien angezeigt.
Show Files Includes. Das View zeigt die Hierarchie der inkludierten
Dateien auf.
Show History List. Zeigt den Verlauf der im View betrachteten Da-
teien an.
Refresh View Content. Der Inhalt des Views wird aktualisiert.
3.11.3 Call Hierarchy
Der Call Hierarchy-View bezieht sich auf eine zu selektierende Funkti-
on und zeigt je nach Modus die Hierarchie der darin enthaltenen Funk-
tionsaufrufe oder der Aufrufer dieser Funktion an. Er folgt dem Schema
des Include-Browsers.
Um die Ausgangsfunktion zu spezizieren, markieren Sie den Funk-
tionsnamen im Texteditor und whlen im Kontextmen Open Call
Hierarchy (Tastenkrzel STRG+ALT+H), so dass sich der View auf Ihrer
Workbench ffnet. Sie knnen auch per DragnDrop eine Funktion im
Outline-View oder C/C++ Projects-View abfassen und auf einem zuvor
geffneten Call Hierarchy-View fallen lassen.
Besonders erwhnenswert ist die ungemein ntzliche Tatsache, dass
Sie nicht nur Funktionen, sondern auch Variablen als Ausgangspunkt
benutzen knnen. Auf diese Weise werden alle Funktionen aufgelistet,
die die Variable referenzieren. Die folgenden Buttons stellen weitere
Funktionalitten bereit:
Show Next Reference. Springt zur nchsten Referenz.
Show Previous Reference. Springt zur vorhergehenden Referenz.
Hide Variables, Constants and Enumerators. Versteckt alle Varia-
blen, Konstanten und Aufzhlungen.
Show Callers. Es werden alle Aufrufer oder Benutzer der Referenz
dargestellt.
Show Callees. Ausgehend von der Referenz werden alle aufgerufe-
nen Funktionen dargestellt.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.11 Views der C/C++-Perspektive 161
Abb. 3-59
Die beiden Modi der
Call-Hierarchie
ShowHistory List. Ein Pulldown-Men, das die letzten angezeigten
Elemente anzubieten hat. Mit dem Eintrag Open History... haben
Sie darauf direkten Zugriff.
Refresh View Content. Aktualisiert die Anzeige.
Das Pulldown-Men des View hat ansonsten noch den Eintrag Show
File Names zu bieten. Bei aktivierter Option wird zustzlich zum Ele-
mentnamen der Name der Datei angezeigt, in der Sie die Referenz n-
den knnen.
3.11.4 Type Hierarchy
Der Type Hierarchy-View zeigt Ihnen auf, wie die C/C++-Typen mitein-
ander in Beziehung stehen. Am interessantesten ist die Funktion natr-
lich fr C++-Entwickler, da hiermit auch die Klassenhierarchie durch-
forstet werden kann, wozu die Basis- und Subklassen einer Klasse zh-
len.
In einem bereits geffneten View knnen Sie analog zur vorherigen
Benutzung einen Eintrag aus dem Outline-View abfassen und ber dem
View fallen lassen. Alternativ markieren Sie den zu untersuchenden Typ
im Texteditor und whlen dann den Menpunkt Navigate > Open Type
Hierarchy aus oder bettigen einfach das zugehrige Tastenkrzel F4.
Abbildung 3-60 zeigt den View.
Mit den ersten drei Buttons knnen Sie entscheiden, ob Sie die kom-
plette Hierarchie oder jeweils nur die ber- und untergeordneten Typen
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
162 3 Projekte erstellen und bearbeiten
Abb. 3-60
Typhierarchie,
dargestellt im
horizontalen Layout
betrachten mchten. Das Pulldown-Men zu Show History List gibt
Ihnen Zugriff auf bisher betrachtete Typen. Mit Refresh lassen Sie die
Anzeige aktualisieren, so dass vorherige nderungen im Quelltext mit
in Betracht gezogen werden.
Neben der simplen Hierarchieanzeige bringt der View einen Klas-
seninspektor mit, der in der Abbildung rechts zu sehen ist, dessen Lage
aber durch Eintrge im Pulldown-Men gendert werden kann. Im In-
spektor nden sich die Elemente der selektierten Klasse wieder, wobei
sich der Umfang umstellen lsst, d. h., ob die geerbten, statischen oder
nicht ffentlichen Elemente sowie Attribute berhaupt angezeigt wer-
den.
3.12 Navigations-Views
Neben dem Editor sind die sogenannten Navigations-Views die wich-
tigsten Views innerhalb von Eclipse und somit auch von CDT. Allen
Navigations-Views ist gemein, die Ressourcen des Workspaces in ih-
rer hierarchischen Anordnung aufzuzeigen und sie fr Sie verwaltbar
zu machen. Kennzeichen eines Eintrags ist neben dem Namen auch ein
kleines Piktogramm, das Aufschluss ber den Typ der Ressource gibt.
Ordner- und Projektressourcen knnen aufgeklappt werden. Dateires-
sourcen sind entsprechend des Dateityps gekennzeichnet.
Ein wichtiges Konzept von Eclipse ist, die dargestellten Ressourcen Dekorationen
mit Dekorationen oder Auszeichnungen zu versehen. Wie von einem
Dateimanager gewhnt, wird der Typ einer Ressource durch ein Pikto-
gramm angezeigt. Zustzlich sind noch vielfltige andere Auszeichnun-
gen denkbar, die zum einen das dargestellte Symbol modizieren, zum
anderen auch textueller Natur sein knnen. Beigesteuert werden diese
Dekorationen von installierten Plugins.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.12 Navigations-Views 163
CDT verwendet beispielsweise eine Auszeichnung, die erkennbar Ein kleiner Punkt
kennzeichnet eine
Datei als indiziert.
macht, ob eine Datei im Index bercksichtigt wird oder nicht. Stan-
dardmig ist diese Dekoration deaktiviert, wohingegen in etwa die
Dekoration verknpfter Ressourcen aktiviert ist. Um den Status der ge-
nannten und aller anderen Auszeichnungen zu beeinussen oder um
berhaupt einen berblick ber alle angebotenen Varianten zu erhal-
ten, ist Ihnen die Seite General > Appearance > Label Decorations der
globalen Voreinstellungen dienlich. Mchten Sie z. B. indizierte C/C++-
Dateien auszeichnen lassen, dann stellen Sie auf dieser Seite sicher, dass
ein Hkchen vor C/C++ Indexed Files zu nden ist.
Neben einer rein informativen Ansicht ber Ressourcen, erlaubt In einem
Navigations-View
knnen Sie die
alltglichen Dateiver-
waltungsaufgaben
erledigen.
ein Navigations-View, angezeigte Dateien mit Hilfe von DragnDrop
zu verschieben oder zu kopieren
19
, gegebenenfalls auch projektber-
greifend. DragnDrop funktioniert im brigen auch vom und zum
Datei-Manager des Betriebssystems. Weitere bekannte Datei-Manager-
Funktionen lassen sich ber das Kontextmen hervorbringen. Sie kn-
nen mit Hilfe eines Doppelklicks oder ber besagtes Kontextmen eine
Ressource ffnen, wobei Sie hier auch der zu benutzende Texteditor zur
Wahl steht. Hinter demEintrag Open With > verbergen sich mindestens
folgende Eintrge:
Text Editor. ffnet die Ressource mit demeinfachen Texteditor, der
Komfortfunktionen wie beispielsweise Syntax Highlighting vermis-
sen lsst.
System Editor. ffnet die Ressource nicht innerhalb von Eclipse,
sondern ber ein externes Programm, das durch Ihr System vorge-
geben ist.
In-Place Editor. ffnet die Ressource innerhalb von Eclipse, aller-
dings nicht unter Verwendung eines Eclipse-internen Editors. Diese
Option steht z. B. auf Windows-Systemen zur Verfgung und nutzt
dort Microsofts OLE-Protokoll, um kompatible Editoren einzubet-
ten.
Default Editor. Benutzt den fr die Ressource voreingestellten Tex-
teditor.
Other.... Ein neues Fenster erscheint, in dem Sie ein Programm an-
geben knnen, welches benutzt werden soll, um die Datei zu ffnen.
Zustzlich knnen weitere Eintrge vorhanden sein, je nachdem, wel-
che Editoren fr den gewhlten Ressourcentyp in Eclipse registriert
sind. Fr Sie als C/C++-Entwickler ist der Eintrag C/C++ Editor von
Bedeutung, der freilich auch der voreingestellte Editor fr smtliche mit
C/C++ assoziierten Dateitypen ist.
19
Um zu kopieren, halten sie beim Fallenlassen die STRG-Taste gedrckt.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
164 3 Projekte erstellen und bearbeiten
Ist der Zustand Link with Editor aktiv, der mit Hilfe des gleich- Navigations-View und
Editor verknpfen namigen Buttons in der Titelleiste gewechselt werden kann, so werden
Editor und Navigations-Views miteinander verknpft. Das hat zur Fol-
ge, dass beim Aktivieren eines Editors die darin bearbeitete Ressource
auch im Navigations-View sichtbar gemacht wird und aktiv erscheint.
Darber hinaus besitzen die Navigations-Views ein Men, ber
welches Sie mindestens Zugriff auf die Filter und Working Sets erhalten.
So knnen Sie mit Select Working Set... das Working-Set denieren so-
wie neue erstellen, wie in Abschnitt 3.7 ab Seite 133 beschrieben wird.
3.12.1 Navigator
Der Navigator-View ist der einfachste der integrierten Navigation-
Views. Er stellt die Ressourcen so dar, wie sie sich auf dem Dateisystem
benden. Insbesondere werden auch Hilfsdateien prsentiert, die bei
anderen Views versteckt sind. Dazu zhlt z. B. die Datei .project, in der
sich Eclipse die projektspezischen Einstellungen merkt. Das Verhalten
kann ber einen Filter aber auch an die eigenen Wnschen angepasst
werden. In der Regel sollte die Benutzung dieses Views nicht notwen-
dig sein. Hilfreich wird er dann, wenn bei wichtigen Projektdateien, wie
bei der eben genannten, Konikte vorliegen.
Abb. 3-61
Im Navigator-View
wird die Hierarchie der
Ressourcen so
abgebildet, wie sie sich
auf dem Dateisystem
bendet.
3.12.2 C/C++ Project
Der C/C++ Project-View, dessen Ansicht in Abbildung 3-62 illustriert
ist, stellt wie alle Navigations-Views die Ressourcen der Projekte in ei-
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.12 Navigations-Views 165
ner Hierarchie dar. Er eignet sich jedoch besonders fr C/C++-Projekte,
weil er fr jedes C/C++-Projekt drei zustzliche virtuelle Ordner mit
sich bringt. Dies sind:
der Include-Order,
der Binaries-Ordner und
der Archive-Ordner.
Der Include-Ordner enthlt die von CDT erkannten Suchpfade fr die Suchpfade werden im
Include-Ordner
aufgelistet.
Header-Dateien. Bereitet der Indexer Probleme, so ist der Ordner die
erste Adresse, um eine mgliche Ursache zu identizieren. Selbstver-
stndlich wird die den Pfaden angeschlossene Hierarchie angezeigt. So
knnen Sie recht einfach Header-Dateien im Texteditor ffnen und be-
gutachten.
Abb. 3-62
Im C/C++ Project-View
wird neben den
Ressourcen in ihrer
hierarchischen
Anordnung die
Struktur der Dateien
dargestellt.
Im Binaries-Ordner werden alle sich im Projekt bendlichen ausfhr- Binrdateien knnen
untersucht werden. baren Dateien angezeigt, wohingegen im Archive-Ordner die Bibliothe-
ken Platz nden. Voraussetzung dafr ist allerdings, dass die richtigen
Binary-Parser fr das Projekt aktiviert sind (siehe Abschnitt 4.4.6 auf
Seite 203). Indem Sie die Ressourcen aufklappen, knnen Sie an weite-
re Informationen gelangen. Dazu zhlen die benutzten Quelltextdatei-
en oder die enthaltenen Symbole. Eine Stufe weiter geht brigens der
Executable-View, der Binrdateien gesammelt auistet. Im Rahmen des
Debuggings wird der View in Abschnitt 5.6.8 beginnend auf Seite 287
nher beleuchtet.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
166 3 Projekte erstellen und bearbeiten
Ein weiteres Merkmal der speziellen Ansicht ist, dass zu den Da- Die Struktur von
C/C++-Dateien kann
betrachtet werden.
teiressourcen, deren Name mit einem bekannten C/C++-Dateisufx
endet, die Struktur hnlich der des Outline-Views betrachtet werden
kann. Hierzu klappen Sie die Datei einfach auf.
Zu erwhnen ist dann noch, dass Dateien und Verzeichnisse, die bei Kongurationsdateien
werden ausgeblendet. der tglichen Arbeit eher als strend empfunden werden, standardm-
ig nicht angezeigt werden. Hierzu zhlen die .project- und .cproject-
Dateien wie auch die Verzeichnisse der Kongurationen.
Das Men bietet neben den Eintrgen des Navigator-Views noch
den Eintrag Non-C projects. Bei aktivem Zustand werden alle Projekte,
die keine C/C++-Nature assoziiert haben, in der Ansicht herausgeltert.
3.12.3 Project Explorer
Der Project Explorer-View ist auch ein Navigations-View und dient,
wie der Name suggeriert, der Exploration aller im Workspace vorhan-
denen Projekte. Die Funktion ist im Wesentlichen identisch zum C/C++
Projects-View, d. h., Eclipse-spezische Metadaten werden ausgeblen-
det, virtuelle Ordner erscheinen und die tieferen Strukturen der C/C++-
Quelltexte knnen exploriert werden. Auch kann man hnliche Opera-
tionen ausfhren.
Der Unterschied besteht eigentlich darin, dass der C/C++ Pro-
jects-View CDT-spezisch ist, whrend der Project Explorer-View vom
Eclipse-Framework bereitgestellt wird. Dieser Fakt fhrt dazu, dass
sich andere Plugins z. B. in das Pulldown-Men einklinken knnen. So
kommt mit installiertem JDT-Plugin der Eintrag Package presentation
hinzu, mit dem Sie die Art beeinussen, in denen Java-Packages dar-
gestellt werden. Diese Auswahlmglichkeit bietet der C/C++ Projects-
View nicht.
3.13 Elemente nden
Eine uerst interessante Funktion bietet der Open Element-Dialog,
der ber den Button in der Toolbar oder mittels Meneintrag Navigate
> Open Element... hervorgebracht werden kann. Abbildung 3-63 zeigt
den Dialog. In ihm werden die im Workspace vorhandenen Elemen-
te von allen indizierten C/C++-Projekten angezeigt, natrlich mit der
Mglichkeit, Eintrge nach verschiedenen Kriterien zu ltern:
Choose an element beschrnkt die angebotene Auswahl auf Be-
zeichner. Die Jokersymbole ? und * knnen verwendet werden,
um ein beliebiges Zeichen bzw. eine beliebige Zeichenkette zu mat-
chen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.14 Suchen und Ersetzen 167
Abb. 3-63
Der Open
Element-Dialog
Visible element types beschrnkt die angebotene Auswahl auf die
aktivierten Elementtypen.
Alle Elemente, die diesen Kriterien entsprechen, werden im mittleren
Feld unter Matching elements angezeigt. Ein Klick auf einen Treffer
lsst genaue Informationen zu Pfad, Typ und Namensraum im unteren
Feld erscheinen. Diese Funktion zeigt insgesamt groe hnlichkeit zur
C/C++ Search-Funktion auf, nur haben Sie die Treffer sofort im Blick.
Als nachteilig erweist sich jedoch, dass es sich bei dem Dialog um ein
modales Fenster handelt. Des Weiteren knnen hiermit keine lokalen
Variablen angezeigt werden.
3.14 Suchen und Ersetzen
Wir kennen bereits die Suchfunktion aus Abschnitt 3.5.11, die es er-
laubt, innerhalb des gerade in Arbeit bendlichen Quelltextes nach Zei-
chenketten zu suchen oder diese zu ersetzen. Dies ist aber oft nicht
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
168 3 Projekte erstellen und bearbeiten
ausreichend. Durchaus kommt es einmal vor, dass man gerne alle Vor-
kommnisse einer Zeichenkette wie DirScanner im gesamten Projekt
wissen mchte, das sich zudember mehr als hundert Dateien erstreckt.
Fr eine Entwicklungsumgebung ist deshalb eine Texteditor-basierende
Suchfunktion bei weitem nicht ausreichend eine Entwicklungsumge-
bung bedarf vielmehr einer mchtigen Suchfunktion. Das, was Eclipse
hier anzubieten hat, ist Thema dieses Abschnitts.
Genau genommen ist dies nicht nur eine einzige Funktion, die
Eclipse anzubieten hat. Es handelt sich eher um mehrere hnliche Funk-
tionen, deren Sinn es, die Suche innerhalb einer Menge von Dateien un-
ter der Bercksichtigung verschiedener Kriterien zu ermglichen. Die
verschiedenen Suchfunktionen verfgen deswegen ber eine hnliche
Benutzerschnittstelle.
Abb. 3-64
Gemeinsam
verwendete
Benutzerschnittstelle
der komplexen
Suchfunktion
Aufrufen knnen Sie das Ganze mit Hilfe des Meneintrages Search
> Search..., woraufhin sich das Suchfenster ffnet. Es besteht aus einer
Reihe verschiedener Register, die die bereits erwhnten hnlichen Funk-
tionen reprsentieren. Bei allen vorhandenen Suchfunktionen kann der
Benutzer im Kasten Scope die zu durchsuchenden Dateien eingrenzen,
wie in Abbildung 3-64 zu sehen ist. Whlen Sie
Workspace, um im gesamten Workspace suchen zu lassen,
Selected resource, um nur die gerade selektierte Ressource (was
auch ein Ordner oder ein Projekt sein kann) zu durchsuchen (die-
se Option ist nur verfgbar, wenn tatschlich vor dem Aufruf eine
Ressource selektiert war),
Enclosing projects, um Projekte zu durchsuchen, die die selektierte
Ressource einschlieen, oder
Working set, um ein speziell anzugebendes Working-Set zu durch-
suchen.
Die Suche kann mit dem Bettigen des Search-Buttons gestartet wer- Suchergebnisse werden
u.a. im View Search
dargestellt.
den. Gewhnlich lenkt dann ein neues Fenster Ihre Aufmerksamkeit
auf sich, um Sie ber den Fortschritt der Suche zu informieren. Sie kn-
nen es mit Run in Background in den Hintergrund versetzen, wenn die
Operation voraussichtlich lnger dauern wird. Gleichzeitig ffnet sich
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.14 Suchen und Ersetzen 169
der Search-View, in dem nach und nach entsprechend der Hierarchie
alle Dateien erscheinen, bei denen etwas gefunden worden ist. Jede Da-
tei lsst sich aufklappen, was die Ergebnisse dann Zeile fr Zeile zum
Vorschein bringt. Mittels Doppelklick gelangen Sie im Texteditor zur
entsprechenden Stelle (falls notwendig, wird ein neuer geffnet).
Aber nicht nur in diesem View werden die Ergebnisse prsentiert, Auch im Quell-
texteditor werden die
Ergebnisse angezeigt.
sondern auch im Texteditor selber. Alle Zeilen, die die Zeichenkette ent-
halten, werden in der linken vertikalen Leiste des Editors durch einen
Pfeil speziell gekennzeichnet.
In den folgenden Unterabschnitten beschreiben wir die zwei fr
die C/C++-Entwicklung interessanten Suchfunktionen File Search und
C/C++ Search. Falls Sie eine Eclipse-Version verwenden, die auch Java-
Programme erzeugen kann, so werden Sie vermutlich eine Suchfunktion
speziell fr Java-Quelltexte sehen knnen. Andere Plugins knnen wei-
tere Funktionen hinzufgen.
3.14.1 File Search
Die Methode File Search ist die einfachste Variante. Sie ist dem aus der
Unix-Welt bekannten grep sehr hnlich und behandelt den zu durchsu-
chenden Text als eine Sequenz von Zeichen. Abbildung 3-65 illustriert
das Interface.
Abb. 3-65
Interface der Methode
File Search
Containing text. Hier geben Sie die zu suchende Zeichenkette an.
Es werden sogenannte Wildcards oder Joker akzeptiert. Dabei steht
der Stern * fr eine beliebige Zeichenkette und ? fr genau ein
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
170 3 Projekte erstellen und bearbeiten
beliebiges Zeichen. Sollten Sie einmal nach diesen Zeichen suchen
wollen, verwenden Sie den Backslash \, der als Escape-Zeichen
dient.
Case sensitive. Bei aktivierter Option wird bei der Suche zwischen
Gro- und Kleinschreibung unterschieden.
Regular expression. Bei aktivierter Option wird der Suchtext als re-
gulrer Ausdruck
20
interpretiert. Damit kann nach komplizierteren
Regeln gesucht werden.
File name patterns. Durch Komma getrennte Liste, mit der die zu
durchsuchenden Dateien weiter eingegrenzt werden knnen.
Consider derived resources. Es werden auch Ressourcen durch-
sucht, deren Flag Derived gesetzt ist. Mehr dazu gab es in Ab-
schnitt 3.3 zu lesen.
Sie knnen den Suchvorgang starten, indem Sie den Button Search be-
ttigen. Mchten Sie die Zeichenkette durch eine andere ersetzen, so
bettigen Sie den Replace...-Button. In beiden Fllen erscheinen die
Ergebnisse Zeile fr Zeile im Search-View. Die Anordnung ist dabei
hierarchisch, entsprechend der Ressourcen-Hierarchie der durchsuch-
ten Projekte, nur dass es eine weitere Ebene unter den Dateiressourcen
gibt. Dort enthalten sind alle Zeilen der Ressource, fr die ein Treffer
vorliegt. Des Weiteren ist die gefundene Stelle in jeder Zeile hervorgeho-
ben. Selbstverstndlich gelangen Sie mit einem Doppelklick auf diesen
Eintrag sofort an die Stelle im Quelltexteditor.
3.14.2 C/C++ Search
Die Methode C/C++ Search ist eine speziell auf C/C++-Projekte zuge-
schnittene Suchvariante, die als Grundlage nicht den rohen Quelltext
nutzt. Sie bedient sich des Index eines Projekts, so dass Zeichenketten
imBezeichner bestimmter struktureller Elemente gefunden werden kn-
nen. Selbstverstndlich bedeutet dies auch, dass Sie die Index-Erstellung
nicht abschalten sollten, falls Sie diese Suche verwenden mchten.
Beispielsweise knnen Sie nach der Zeichenkette space in allen
Variablennamen suchen. Aufrufe und Denitionen von gleichnamigen
Funktionen werden ignoriert. Dasselbe geschieht fr alle anderen Struk-
turelemente, inklusive fr Textpassagen innerhalb von Kommentaren.
Die komplexere Suchmethode erlaubt es also, weitere Einschrnkungs-
kriterien festzulegen.
Die Benutzerschnittstelle wird in Abbildung 3-66 dargestellt. Die zu
suchende Zeichenkette geben Sie bei Search Text an. Analog zum File
Search erfllen die beiden Symbole ? und * ihre Jokerfunktion. Ein
20
spezielle Platzhalter, die eine Menge von Zeichenketten reprsentieren
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.15 Textschablonen anpassen 171
Abb. 3-66
Interface der Methode
C/C++ Search
Escape-Zeichen gibt es hingegen nicht: Beide Symbole drfen ohnehin
weder in C noch in C++ in Bezeichnern auftauchen. Soll die Gro- und
Kleinschreibung eine Rolle spielen, so aktivieren Sie die Option Case
sensitive.
Wie Sie im Kasten Search For sehen, knnen Sie die Zeichenkette in
Bezeichnern ganz unterschiedlicher Strukturelemente suchen lassen: in
Funktionsnamen, in Strukturnamen, in Feldnamen usw. oder aber mit
Any Element in allen. In der Box Limit To knnen Sie zudem:
Declarations whlen, wenn nur in Deklarationen (Prototypen) ge-
sucht werden soll,
Denitions whlen, wenn nur in Denitionen (z. B. vollstndig im-
plementierte Funktionen) gesucht werden soll,
References whlen, wenn nur in Referenzen gesucht werden soll,
oder
All Occurrences whlen, wenn in allen Arten gesucht werden soll.
3.15 Textschablonen anpassen
In diesem Abschnitt werden Sie erfahren, wie Sie die von CDT und
vomTexteditor bereitgestellten Schablonen (engl. templates) nach Ihren
individuellen Wnschen anpassen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
172 3 Projekte erstellen und bearbeiten
3.15.1 Editorschablonen
Editorschablonen werden direkt im Editor eingegeben und auf Tas-
tendruck expandiert. Sie sind ein Feature der Content-Assistenz und
knnen deshalb auch ber STRG+SPACE herbeigerufen werden, wenn
Mehrdeutigkeiten vorliegen. Die angebotene Auswahl kann dabei an
eigene Wnsche angepasst werden. Dazu dient die Seite C/C++ > Edi-
tor > Code Templates in den globalen Voreinstellungen, die Sie in Ab-
bildung 3-67 sehen knnen.
Abb. 3-67
Eigene Editor-
schablonen denieren
Es bendet sich dort eine Liste mit allen bekannten Schablonen. Zu
einer Schablone gehrt:
der kurze Name, den Sie auch im Editor eingeben, um die Schablo-
ne zu referenzieren,
der Kontext (Context), der angibt, ob die Schablone bei Code oder
bei Kommentaren aktiv sein soll,
eine Beschreibung (Description), die Sie in der Content-Assistenz
zu Gesicht bekommen,
das Flag Auto Insert, das angibt, ob die Schablone automatisch
eingesetzt werden soll, wenn keine anderen Ergnzungen mglich
sind,
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.15 Textschablonen anpassen 173
der Inhalt der Schablone. Er wird im Textfeld unter Preview ange-
zeigt.
Alle Attribute sind in einem Dialog zu denieren, der beim Anlegen ei-
ner Schablone mit New... oder beim Modizieren einer Schablone mit
Edit... erscheint. Der Inhalt der Schablone kann dabei mit Variablen
versehen werden, die durch ein Dollarzeichen und zwei geschweifte
Klammern gekennzeichnet sind. Beim Anwenden der Schablone wer-
den diese entweder gleich durch Eclipse ersetzt, falls es sich um eine
eingebaute Variable handelt, oder vom Benutzer im Schablonenmodus
abgefragt.
21
Ein Auszug der Variablen, die Eclipse versteht, ndet sich
in Tabelle 3-5.
Tab. 3-5
Auszug der mglichen
Variablen fr
Schablonen
Variable Bedeutung
${cursor} Position des Cursors nach Abarbeitung der
Schablone
${dollar} Dollarzeichen
${enclosing
_
method} Name der umschlieenden Funktion oder
Methode
${file} Name der in Bearbeitung bendlichen Datei
${line
_
selection} Inhalt der markierten Zeilen
${user} Name des Benutzers
Beispielsweise hat die eingebaute Schablone, die die Beschreibung for Beispiel
loop with temporary variable trgt, folgenden Inhalt:
for (${var} = 0; ${var} < ${max}; ++${var}) {
${line
_
selection}${cursor}
}
Nach Anwendung dieser Schablone wird die Variable ${line
_
selection}
durch den Text ersetzt, der zuvor markiert war. Die Variablen ${var}
und ${max} sind CDT unbekannt und werden deshalb vom Benutzer mit
Hilfe des Schablonenmodus abgefragt. Anschlieend wird der Cursor
hinter die letzte Anweisung der for-Schleife positioniert.
21
Hierbei werden die Variablen direkt im Text eingerahmt und knnen
von Ihnen angepasst werden. Sie verlassen den Schablonenmodus z. B. mit
STRG+ENTER verlassen werden.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
174 3 Projekte erstellen und bearbeiten
3.15.2 Quelltextschablonen
Im Gegensatz zu den Editorschablonen sind die Quelltextschablonen
fr von CDT selbst erzeugte Dateien und Konstrukte gedacht. Hierzu
zhlen z. B. die mit dem New C++ Class-Wizard erzeugten Klassen. Sie
betreffen den Code-Style und sind daher auf der Voreinstellungsseite
C/C++ > Code Style > Code Templates zu nden, deren Ansicht Sie in
Abbildung 3-68 sehen.
Abb. 3-68
Quelltextschablonen
In der Liste erkennen Sie, dass die Schablonen in drei Kategorien einge-
teilt werden:
Comments. Betrifft erzeugte Kommentare ber die verschiedenen,
strukturellen Elemente.
Code. Betrifft die Form von Stubs, also als leer implementierte De-
nitionen, hier von Methoden, Konstruktoren und Destruktoren.
Files. Betrifft ganze Dateien.
Den Inhalt der Schablone sehen Sie im unteren Feld. Diesen knnen
Sie mit einem Klick auf Edit... in einem Edit Template-Dialog bear-
beiten. Dabei kann der Text genauso wie bei den im letzten Abschnitt
behandelten Editorschablonen Variablen beinhalten, die gegebenenfalls
ersetzt werden. Mgliche Variablen zeigt man im Dialog durch Klick
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
3.16 Projektspezische Metadateien 175
auf Insert Variable... an und fgt eine anschlieend per Doppelklick
nach Wunsch ein.
Um neue Eintrge knnen Sie nur die Sektion Files ergnzen. Hier
benden sich die Schablonen, die in diversen Wizards fr neue Dateien
zur Auswahl stehen, wie sie in Abschnitt 3.2.2 beschrieben wurden.
3.16 Projektspezische Metadateien
Mit jedem C- oder C++-Projekt sind einige Metadateien assoziiert. Die-
se werden zum einen im Projektverzeichnis abgelegt, zum anderen im
Workspace, je nachdem, ob sie Einstellungen tragen oder von Eclipse
oder CDT erzeugt werden. Im Folgenden erfahren Sie, welche Dateien
welchem Zweck dienen.
3.16.1 Metadateien im Projektverzeichnis
Im Projektverzeichnis benden sich im XML-Format abgelegte Meta-
dateien, die hauptschlich projektspezische Einstellungen tragen. Sie
knnen die Dateien in einem Navigations-View dann sehen, wenn Sie
den entsprechenden Filter .
*
ausgeschaltet haben. Standardmig de-
aktiviert ist dieser beim Navigator-View, wohingegen beim C/C++ Pro-
jects-View die Dateien nicht sichtbar sind.
Bedeutung haben diese Dateien fr Sie vor allem dann, wenn Sie
das Projekt unter die Fittiche einer Versionskontrolle stellen. Sie sollten
diese dann beim Hochladen des Projekts nicht auer Acht lassen, wenn
Sie die Eigenschaften des Projekts gendert haben, wie z. B. die Build-
Variablen.
Die Datei .project
Die Datei .project ist fr alle Eclipse-Projekte charakteristisch. Hier
benden sich wichtige Daten ber das Projekt, z. B. der Name, die asso-
ziierten Natures sowie die benutzten Builder (siehe dazu Abschnitt 4.1
im weiteren Verlauf des Buchs).
Die Datei .cproject
Diese Datei existiert, wie der Name es schon vorgibt, nur fr C/C++-
Projekte, die mit CDT angelegt worden sind. Falls Sie CDT schon vor
Version 5.0 benutzt haben, werden Sie bei Ihren Projekten eventuell
eine Datei namens .cdtproject vornden, die die gleiche Aufgabe er-
fllt: CDT legt hier vor allen Dingen projektspezische Einstellungen
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
176 3 Projekte erstellen und bearbeiten
ab. Darunter fallen z. B. die Build-Variablen, die Sie spter noch ken-
nenlernen.
Das Verzeichnis .settings
Dieses Verzeichnis ist nicht in jedem Fall im Projekt vorhanden. Es wird
erstellt, wenn Sie bestimmte Einstellungen in den Projekteigenschaften
verndern. Je nachdem, welche und wie viele Einstellungen das sind,
existiert darin eine variable Anzahl von Dateien unterschiedlicher Na-
men.
3.16.2 Metadateien im Workspace-Verzeichnis
Weitere Metainformationen benden sich im Verzeichnis
.metadata des Arbeitsbereichs. Zum Beispiel wird im Verzeichnis
org.eclipse.cdt.core die Index-Datenbank angelegt.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
177
4 Der Build-Prozess
Der Build-Prozess ist fr das bersetzen der Programme verantwortlich
und gehrt damit zu einer der Grundaufgaben, die eine IDE erfllen
sollte. Im Verlauf der Entwicklung steht ihm mindestens eine dem Edi-
tieren des Projekts gleichwertige Bedeutung zu. Wie eingangs erwhnt,
fehlt CDT ganz im Gegensatz zum JDT ein integrierter Compiler. CDT
delegiert diese Aufgabe an andere Werkzeuge weiter. Dank des recht
allgemein gehalten Toolchain-Konzepts besitzt das Framework im Prin-
zip keinerlei Einschrnkung, um welche Werkzeuge es sich dabei han-
delt. Von Haus aus untersttzt CDT die GNU Compiler Collection,
doch auch andere Compiler sind denkbar und werden von den CDT-
Entwicklern angeboten, wie es das XL Compiler Support-Feature be-
weist.
Wurde in den vorangegangenen Kapiteln nur das Notwendigste
ber den Build-Prozess erlutert, so klrt dieses Kapitel ber die Fein-
heiten und Details auf. Es wird aufgezeigt, wie Sie das bersetzen Ihres
Projekts beeinussen und wo Sie etwas auf bestimmte Art und Weise
einzustellen haben. Weiterhin wird auf die bei der bersetzung unter
der Haube stattndenden Vorgnge eingegangen. Zwar ist nicht alles,
was hier beschrieben wird, beim tglichen Gebrauch von Bedeutung,
ein Verstndnis ber die Ablufe innerhalb von CDT hilft aber bei so
mancher Fehlersuche.
Im ersten Abschnitt wird auf das Builder-Framework von Eclipse Builder von CDT
eingegangen. Builder stellen die Module dar, die bei einem Aufruf des
Build-Kommandos angestoen werden, um aus bereits vorhandenen
Ressourcen neue Ressourcen zu generieren. Die folgenden Abschnit-
te widmen sich den von CDT beigesteuerten Buildern und geben Auf-
schluss ber die Mglichkeiten, den Prozess Ihren Wnschen anzupas-
sen.
In den weiteren Abschnitten des Kapitels gubt es Erluterungen da- Konkrete
Anwendungsflle
werden zum Schluss
des Kapitels
besprochen.
zu, wie die Individualisierungsmglichkeiten vom Build-Prozess fr vier
interessante Anwendungsflle genutzt werden knnen. Zunchst wird
eine Lsung fr das Problem der Einbindung von Code-Generatoren
besprochen. Es folgt das besonders fr Softwareentwickler eingebet-
teter Systeme interessante bersetzen fr eine sich von der Entwick-
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
178 4 Der Build-Prozess
lerplattform unterscheidende Rechnerplattform (Cross-Compiling). Als
Nchstes wird gezeigt, wie Sie die Projektumgebung so einrichten, dass
ein entfernter leistungsfhiger Rechner die hug langwierige Aufgabe
des bersetzens bernimmt (Remote Compiling). Das Kapitel endet mit
einem Abschnitt, der illustriert, wie Microsofts Visual C++ mit Eclipse
und CDT in Einklang gebracht werden kann.
4.1 Builder
Die Aufgabe eines Builder in Eclipse besteht darin, aus den Rohda-
ten, d. h. Ressourcen wie Quelltexten, neue Ressourcen zu erzeugen,
die dann in den meisten Fllen mit dem Derived-Flag versehen werden.
Ein solcher Vorgang ist bei einem gerade in Entwicklung bendlichen
Projekt oftmals nicht von Erfolg gekrnt. Dabei auftretende Probleme,
seien sie syntaktischer Natur im Quelltext oder einfach nur kongura-
tionstechnischer Art, werden durch diverse Mechanismen wie spezielle
Formen von Annotationen dem Entwickler bekannt gegeben.
4.1.1 Die vier Modi eines Builders
Ein Builder untersttzt dabei vier verschiedene Modi, die im Folgenden
beschrieben werden:
Ein inkrementelles bersetzen (Incremental build) wird veranlasst,
sobald Sie die Meneintrge Project > Build, Project > Build All
whlen oder quivalente Schaltchen bettigen. Inkrementell be-
deutet, dass lediglich das sogenannte Ressource-Delta bersetzt
wird, also nur der Teil der Ressourcen, die seit der letzten ber-
setzung gendert worden sind. Die Ressource-Deltas, die Eclipse
liefert, sind sehr feinkrnig und knnen nicht nur ganze Dateien
erfassen, sondern auch geringe nderungen im Quelltext.
Das automatische bersetzen (Auto-build) unterscheidet sich vom
inkrementellen bersetzen lediglich darin, dass es implizit fr das
Projekt ausgelst wird, z. B. indem eine Ressource hinzugefgt, ver-
ndert oder im Workspace modiziert wurde.
Ein vollstndiges bersetzen (Full build) eines Projekts veranlasst
den Builder, alle Ressourcen neu zu bearbeiten, unabhngig von
einem Ressource-Delta. Auch wenn aus irgendeinem Grund kein
Ressource-Delta ermittelt werden konnte, wird dieser Modus akti-
viert.
Das Aufrumen (Clean build) eines Projekts fhrt zum Lschen al-
ler im Projekt erzeugten Ressourcen und natrlich des Ressource-
Deltas. Das Aufrumen eines Projekts initiieren Sie z. B. im Kon-
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.1 Builder 179
textmen innerhalb eines Navigations-Views mit Hilfe des Eintra-
ges Clean Project. Ein dem Aufrumen angeschlossenes bersetzen
ist dann zu einem vollstndigen Bauen quivalent.
Das inkrementelle bersetzen wird momentan in CDT im Vergleich Inkrementelles
bersetzen wird von
CDT noch nicht
efzient untersttzt.
zum Java-Compiler von Eclipse nicht wirklich efzient untersttzt,
denn es wird durch eine langwierige vollstndige bersetzung der ge-
nderten Ressourcen ersetzt. Das hngt sicher damit zusammen, dass
die Programme der GNU Compiler Collection, die von Haus aus durch
CDT untersttzt werden, die ntigen Features vermissen lassen. Da-
zu zhlt z. B., dass nur genderte Funktionen neu bersetzt werden.
Allerdings arbeiten einige GCC-Entwickler seit einiger Zeit an diesem
Problem [8].
Als Folge der schlechten Turnaround-Zeiten eines bersetzungs- Deaktivieren Sie das
automatische Bauen. vorganges sollten Sie das automatische bersetzen abschalten, ansons-
ten wird bei groen Projekten der Arbeitsuss erheblich gehemmt. Zu-
griff ber dieses Workspace-weite Feature haben Sie mit dem Menein-
trag Project > Build Automatically. Es sei dabei erwhnt, dass das Ab-
stellen der automatischen bersetzung eigentlich gegen die Eclipse-Phi-
losophie verstt, dass der gerade in Entwicklung bendliche Code zu
mglichst jedem Zeitpunkt auch in kompilierter Form vorliegen soll.
4.1.2 Builder-Assoziationen
Eclipse verfolgt das Ziel, eine mglichst vielseitige und exible Ent-
wicklungsumgebung zu sein. Daraus begrndet sich die hohe Modula-
ritt und Skalierbarkeit, die sich auch im Builder-Konzept uert: Jedes
Eclipse-Plugin kann neue Builder hinzusteuern. So tut es CDT, aber
auch die Java-Entwicklungsumgebung JDT. Natrlich ergibt es nicht
immer Sinn, jeden Builder bei jedem geffneten Projekt einzusetzen,
z. B. wird der JDT-Builder wenig mit C/C++-Quelltexten anzufangen
wissen. Umgekehrt kann aber auch der CDT-Builder wenig Sinnvolles
aus Java-Quelltextdateien erzeugen.
Builder werden deshalb mit Projekten assoziiert. Beim Anlegen ei- Builder werden beim
Erzeugen von Projekten
mit ihnen assoziiert.
nes Projekts legen Sie die Art des Projekts fest, in Eclipse-Sprache auch
Nature genannt. Builder knnen von den Plugins so konguriert wer-
den, dass sie eine spezische Projektart voraussetzen. Anders formu-
liert: Builder, die nicht auf das Projekt passen, werden beim Erstellen
ignoriert. Ein nachtrgliches Hinzufgen von solchen artspezischen
Buildern ist nach Projekterstellung von Ihnen als Anwender der IDE,
wenn berhaupt, nur schwer mglich. In den meisten Anwendungsfl-
len werden Sie jedoch ein homogenes Projekt bearbeiten, also ein Pro-
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
180 4 Der Build-Prozess
jekt, in dem nur eine Programmiersprache benutzt wird, so dass diese
Einschrnkung keine Probleme bereiten sollte.
4.1.3 Builder-Konguration
Als Anwender von Eclipse erhalten Sie Zugriff auf die Konguration
mit Hilfe der Projekteingeschaften auf der Seite Builders, wie in Ab-
bildung 4-1 zu sehen ist. Sie besteht im Groen und Ganzen aus einer
Auswahl, in der die aktuell registrierten und fr die Projektart mg-
lichen Builder aufgelistet werden. Ein Auswahlkasten vor jeder Zeile
zeigt an, ob der Builder im Projekt aktiv ist oder nicht. Bei einem Build-
Kommando werden die aktiven Builder in der Reihenfolge ausgefhrt,
in der sie in der Liste erscheinen. Mit Hilfe der Buttons Up und Down
knnen Sie die Elemente innerhalb der Liste bewegen und so die Rei-
henfolge festlegen.
Abb. 4-1
Builder
Die Verwaltung der Builder eines Projekts geschieht mit Hilfe der bri-
gen Schaltchen.
Einen Builder hinzufgen
Neben den bereits durch die Projektart bestimmten Buildern knnen
Sie auch weitere Builder hinzufgen. Benutzen Sie hierfr den Button
New... in den Builder-Einstellungen. In der daraufhin erscheinenden
Liste haben Sie die Wahl zwischen verschiedenen Typen von externen
Tools, die bei Build-Ereignissen aufgerufen werden. Eclipse bringt selbst
die Untersttzung fr den Ant-Builder mit, dem speziell fr Java ge-
schriebenen Make-hnlichen Werkzeug, und erlaubt das Starten von
externen Programmen ber den Eintrag Program.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.1 Builder 181
Beim Starten der Tools bedient sich Eclipse des Launch-Moduls,
das auch fr das Starten von erzeugten Programmen benutzt wird. Des-
halb stimmt die Konguration der Builder mit der Konguration zu
startender Programme in den wesentlichen Parametern berein und ist
Thema von Kapitel 5. Spezisch fr die Konguration eines Builders
sind lediglich die Aktionen, die zum Aufruf des Tools fhren, also ob
das Werkzeug bei einem Full- oder Clean-Build gestartet werden soll.
Builder importieren
Liegt bereits eine Startkonguration fr externe Werkzeuge in Ihrem
Workspace vor, so knnen Sie diese als Builder importieren. Benutzen
Sie hierfr den Button Import... und selektieren Sie eine bereits vorhan-
dene Startkonguration. Kapitel 5 beschftigt sich ausfhrlich mit den
Startkongurationen. So wird in Abschnitt 5.2 gezeigt, wie Sie doxygen
als externes Werkzeug einbinden knnen.
Builder entfernen
Zum Projekt hinzugefgte Builder knnen Sie mit Remove natrlich
auch wieder entfernen. Die durch ein Plugin beigesteuerten Builder sind
allerdings nicht vollstndig entfernbar.
4.1.4 Zwei Builder fr C/C++-Projekte
Legen Sie ein neues C/C++-Projekt an, so werden dafr mindestens zwei
Builder konguriert, die auch in Abbildung 4-1 auf Seite 180 sichtbar
sind. Das sind
zum einen der Scanner Conguration Builder und
zum anderen der CDT Builder.
Die folgenden beiden Unterabschnitte widmen sich jeweils einem Ex-
emplar.
Scanner Conguration Builder
Damit der in CDT eingebaute Parser und die auf ihm aufbauenden
Funktionen wie Code-Assistenz und der Indexer funktionieren, mssen
neben projektspezischen Header-Dateien auch die vom System bereit-
gestellten Header-Dateien, wie z. B. stdio.h oder iostream, aufndbar
sein. Die Verzeichnisse, die diese Dateien beinhalten, mssen normaler-
weise nicht explizit angegeben werden, denn sie sind imCompiler einge-
baut. Gleichfalls ist es wichtig, ber eingebaute Symbole des Compilers
Bescheid zu wissen, so deniert ein Cygwin-basierter GCC-Compiler
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
182 4 Der Build-Prozess
das Makro
__
CYGWIN
__
und andere Makros, die durchaus in bedingter
bersetzung eine Rolle spielen knnen.
Innerhalb von CDT kommt nun die Aufgabe, derlei Informationen
zu extrahieren, dem Scanner Conguration Builder zu. Das Verhalten
dieses Builders wird vor allen Dingen durch die sogenannten Discovery
Proles bestimmt, zu denen sich in Abschnitt 4.4.2 ab Seite 193 mehr
ndet.
CDT Builder
Der CDT Builder ist der Bestandteil, der den eigentlichen Build-Prozess
von CDT trgt. Die bescheidene Aufgabe lautet, alle C/C++-Quelltexte
zu nehmen und zu einem Produkt zusammenzufgen. Bekanntlich fh-
ren aber viele Wege nach Rom, und so knnen Sie, genau wie beim
vorherigen Builder, das letztendliche Verhalten beeinussen, nur ist die
Anzahl der Optionen um ein Vielfaches hher.
Die wichtigste Entscheidung ber das Verhalten des Builders treffen Ein Projekt selbst
verwalten oder nicht? Sie beim Anlegen des Projekts. Sie betrifft die Frage nach der Verant-
wortung ber den Ablauf des Build-Prozesses. Liegt sie bei Ihnen oder
doch besser bei CDT? Dies hngt natrlich von diversen Faktoren ab,
die bereits im letzten Kapitel in Abschnitt 3.2.1 auf Seite 80 disku-
tiert worden sind. Die beim Anlegen getroffene Entscheidung ist jedoch
nicht fest. Sie kann ber die Eigenschaften des Projekts leicht gendert
werden. Doch bevor Sie ber das Wie in Abschnitt 4.4.1 mehr erfahren,
werden in den nchsten beiden Kapitelabschnitten die fr jede Variante
spezischen Begriffe eingefhrt.
4.2 Build-Variablen
In fast jedem Texteingabefeld, das in irgendeiner Weise mit dem Build-
Prozess in Zusammenhang gebracht wird, knnen Sie Build-Variablen
angeben. Build-Variablen sind fr die Builder das, was Makros fr die
Programmiersprache C oder C++ sind: Sobald innerhalb einer textu-
ellen Eigenschaft, sei es ein Kommando oder ein Argument zu einem
Kommando, eine solche Variable gefunden wird, ersetzt sie ihr aktuel-
ler Wert.
4.2.1 Kennzeichen von Build-Variablen
Build-Variablen sind durch einen Namen und einen Typ ausgezeichnet.
Dabei gibt es folgende Typen:
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.2 Build-Variablen 183
String. Die Variable ist eine Zeichenkette.
String List. Die Variable ist eine Liste von Zeichenketten.
File. Die Variable reprsentiert einen Dateinamen. Beim Editieren
werden Sie durch einen Dateiauswahldialog untersttzt.
File List. Die Variable reprsentiert eine Liste von Dateinamen.
Directory. Die Variable reprsentiert ein Verzeichnis.
Directory List. Die Variable reprsentiert eine Liste von Verzeich-
nissen.
Path. Die Variable reprsentiert einen Pfad, kann also entweder ei-
ne Datei oder ein Verzeichnis referenzieren.
Path List. Die Variable reprsentiert eine Liste von Pfaden.
Inhalte der Variablen werden immer durch eine Zeichenkette reprsen-
tiert und treten auch so bei einer Anwendung in Erscheinung. Der Typ
einer Variablen hat deshalb zur Zeit vor allem deskriptiven Charakter.
Wenn Variablen durch den Benutzer zugewiesen werden, erscheinen al-
lerdings dem Variablentyp angepasste Dialoge.
4.2.2 Build-Variablen benutzen
Um eine Build-Variable zu referenzieren, umschlieen Sie den Namen
der Variablen mit geschweiften Klammern und setzen zu Beginn ein $,
also ${varname}. Referenzen von Build-Variablen knnen Sie selbstver-
stndlich in den Denitionen anderer Build-Variablen benutzen, da die
Substitution rekursiv vonstatten geht. Rekursionskreise werden aller-
dings unterbrochen.
Texteingabefeldern, in denen Sie Build-Variablen benutzen knnen,
ist in der Regel ein Button Variables... beigestellt. Ein Klick auf die-
sen Button bringt den in Abbildung 4-2 gezeigten Dialog auf den Bild-
schirm. Dort werden alle mglichen Variablen aufgelistet. Des Weiteren
klrt Sie eine kurze Beschreibung ber den Sinn und Zweck der Varia-
blen auf.
4.2.3 Gltigkeitsbereich von Build-Variablen
hnlich zu den Variablen in C/C++ haben Build-Variablen einen Gltig-
keitsbereich (engl. scope). Das Venn-Diagramm in Abbildung 4-3 ver-
deutlicht die Regeln. Dort ist jeder Gltigkeitsbereich als Menge dar-
gestellt, wobei der komplette Namensraum als Universum reprsentiert
ist. Eine Variable, die in einem weiter vorn abgebildeten Kontext de-
niert wird, hat Vorrang ber eine gleich benannte Variable, die in ei-
nem weiter hinter abgebildeten Kontext deniert ist. Die Hierarchie der
Build-Variablen umfasst vom Allgemeinsten zum Spezischsten dem-
nach
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
184 4 Der Build-Prozess
Abb. 4-2
Dialog zur Auswahl
von Build-Variablen
den Workspace,
das Projekt und
die Konguration innerhalb eines Projekts.
Variablen knnen zudem von drei verschiedenen Instanzen deklariert
werden:
durch CDT,
durch eine Toolchain und
von Ihnen.
Abb. 4-3
Gltigkeitsbereich der
Build-Variablen.
Beispielsweise
berschreiben die
Variablen einer
Konguration
gleichnamige
Variablen des Projekts
oder des Workspace.
Workspace
Alle Bezeichner
Konfg. 1 Konfg. 2
Projekt
Toolchain
Benutzer
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.2 Build-Variablen 185
Sie und CDT drfen die Variablen innerhalb jeder Hierarchieebene
denieren, wohingegen die Toolchains Variablen nur projekt- oder kon-
gurationsweit denieren knnen. Dabei besitzen die von Ihnen dekla-
rierten Variablen eine hhere Prioritt gegenber denen der Toolchain,
die wiederum Vorrang gegenber den durch CDT denierten Variablen
haben.
4.2.4 Workspace-weite Build-Variablen denieren
Build-Variablen, deren Gltigkeitsbereich der Workspace sein soll, kn-
nen ber die globalen Voreinstellungen hinzugefgt und bearbeitet wer-
den. Whlen Sie hierzu den Menpunkt Window > Preferences... und
anschlieend unter C/C++ den Eintrag Build > Build Variables. Es zeigt
sich ein Bild, wie es in Abbildung 4-4 zu sehen ist.
Abb. 4-4
Build-Variablen global
festlegen
Eine neue Variable fgen Sie mit Hilfe des Buttons New... hinzu. Darauf
ffnet sich ein weiteres Fenster, das in Abbildung 4-5 dargestellt ist.
Dort geben Sie den Namen, den Typ und den Wert der Variablen an,
wobei sich die Maske, die den Wert der Variablen entgegennimmt von
Variablentyp zu Variablentyp unterscheidet. Besttigen Sie die Eingaben
mit OK.
Von Ihnen hinzugefgte Variablen werden in der Liste zur leichteren
Unterscheidung von anderen fett ausgezeichnet und mit einer dunkle-
ren Farbe hinterlegt, so wie es bei der Variable remote
_
user in der Ab-
bildung der Fall ist. Selbst denierte Variablen knnen Sie per Klick
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
186 4 Der Build-Prozess
Abb. 4-5
Eine neue Variable
hinzufgen. Die Maske
fr den Wert ist dem
Typ angepasst. Hier ist
die Variable eine
einfache Zeichenkette.
auf die Schaltche Remove entfernen, ganz im Gegensatz zu den ein-
gebauten Variablen, fr welche die Aktion nicht mglich ist. Ob diese
Variablen in der Liste berhaupt angezeigt werden, bestimmen Sie mit
der Auswahlbox Show system variables. Beide Variablenarten knnen
Sie mit Edit... bearbeiten. Verndern Sie allerdings eine eingebaute Va-
riable, so wird ihr Wert lediglich im aktuellen Kontext berschrieben,
das heit, falls Sie die Variable wieder entfernen, dann kommt lediglich
ihr ursprnglicher Wert zum Vorschein.
4.2.5 Umgebungsvariablen als Build-Variablen
Umgebungsvariablen werden durch CDT automatisch auch als Build-
Variablen hinzugefgt. Da die Namen der Umgebungsvariablen oft mit
groen Buchstaben geschrieben werden, sind sie leicht von den brigen
Variablen zu unterscheiden.
4.2.6 Dynamische Build-Variablen
Neben benutzerdenierten Variablen bietet CDT eine Reihe von ein-
gebauten Variablen. Spannend sind dabei die dynamischen Variablen.
Das sind alle Variablen, die bei den Einstellungen den Wert <ECLIPSE
DYNAMIC VARIABLE> stehen haben und keinen dauerhaft fest zugewiese-
nen Wert besitzen. Ihr Wert ist vielmehr abhngig von einem bestimm-
ten Kontext, z. B. vom Projekt, dem aktuellen Build-Prozess usw.
Im Gegensatz zu statischen Variablen, zu denen auch die benut- Build-Variablen mit
Argumenten zerdenierten zhlen, akzeptieren einige dynamische Variablen ein zu-
stzliches Argument, das dem Namen getrennt durch einen Doppel-
punkt nachgestellt wird, also ${varname:argument}. Da Eclipse die ge-
samte Zeichenkette, die hinter dem ersten Doppelpunkt geschrieben
wird, als ein Argument betrachtet, knnen je nach Vereinbarung natr-
lich auch mehrere Argumente mglich sein. So erlaubt z. B. die Variable
le_prompt, deren Verwendung die Darstellung eines Dateiauswahldia-
log zu Folge hat, die Angabe des Dialogtitels sowie eines vordenierten
Wertes, der durch einen weiteren Doppelpunkt abgetrennt wird.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.3 Kontrolle ber Managed Build 187
4.3 Kontrolle ber Managed Build
In diesem Abschnitt werden die von CDT bereitgestellten Mglichkei-
ten erlutert, die es erlauben, den Prozess des Bauens fr Managed-
Build-Projekte zu individualisieren.
4.3.1 Kongurationen verwalten
Die Anzahl der potenziellen Kongurationen, die ein Projekt anneh-
men kann, ist keineswegs fest. Mit Hilfe des Buttons Manage congu-
rations..., der gleich neben dem Button fr das bersetzen des Projekts
liegt, knnen Sie ein recht schlichtes Fenster hervorrufen, in dem Sie
die Kongurationen des aktuellen Projekts verwalten. Die Ansicht ist
in Abbildung 4-6 aufgezeigt.
Abb. 4-6
Kongurationen
verwalten
Dargestellt wird eine Liste vorhandener Kongurationen, die hier durch
einen Namen und eine Beschreibung gekennzeichnet sind. Mit Set Acti-
ve wird die aktuell gewhlte Konguration zur aktiven Konguration.
Mit New... legen Sie eine neue Konguration an, die Sie mit Remove
auch wieder entfernen knnen. Mit Klick auf Rename ndern Sie den
Namen sowie die Beschreibung der aktuell gewhlten Konguration.
Die letztendlichen Parameter der Kongurationen werden in den
Projekteigenschaften deniert. Nicht alle Parameter eines Projekts sind
in Abhngigkeit von einer Konguration zu setzen. Von denen, die CDT
bereitstellt, sind es aber die meisten. Der Indikator fr kongurations-
vernderliche Parameter ist in den Projekteigenschaften eine spezielle
Auswahlbox, die in Abbildung 4-7 hervorgehoben wurde. Die auf der
Seite vorgenommenen Einstellungen betreffen also nur die darin selek-
tierte Konguration, wobei der Eintrag All congurations alle Kongu-
rationen einschliet.
4.3.2 Quellverzeichnisse
Managed Build arbeitet alle Quellverzeichnisse und rekursiv deren Un-
terverzeichnisse ab, sofern sie nicht durch Filter ausgeschlossen worden
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
188 4 Der Build-Prozess
Abb. 4-7
Der Indikator fr kon-
gurationsvernderliche
Parameter ist
eingekreist.
sind, und ruft fr jede bekannte Datei das dazu passende Werkzeug
auf. Mit dem Konzept der Quellverzeichnisse knnen Sie also grob be-
einussen, welche Dateien bersetzt werden oder nicht.
Welche Verzeichnisse als Quellverzeichnisse dienen, beeinussen Sie
in den Projekteinstellungen auf der Seite C/C++ General > Paths and
Symbols im Karteireiter Source Location. In Abbildung 4-8 nden Sie
die dort prsentierte Ansicht.
Abb. 4-8
Quellverzeichnisse
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.3 Kontrolle ber Managed Build 189
Auf der Seite ist zunchst eine Liste mit smtlichen aktuellen Quell-
verzeichnissen zu sehen. Sie kann durch die beiden Buttons Add Fol-
der... und Link Folder... ergnzt werden, wobei man durch letzteren
auch Quellverzeichnisse hinzufgt, die sich auerhalb des Workspace
benden. Dazu bedient sich CDT beim Konzept der verknpften Res-
source. Etwas unschn ist, dass Quellverzeichnisse immer auf der Ebene
des Projektverzeichnisses eingebunden werden mssen.
Die zweite Ebene der Anzeige ist fr Attribute reserviert, was in
CDT derzeit nur der Exklusionslter ist. Ein Exklusionslter gibt an,
welche im Quellverzeichnisse enthaltenen Verzeichnisse bei einer re-
kursiven Operation wie dem bersetzen zu ignorieren sind. Mit Edit
Filter... modizieren Sie diese Filter. Dabei werden exakte Namen und
Wildcards der Form ?, * sowie ** untersttzt. Die ersten beiden
Wildcards erfllen ihre gewhnliche Funktion, letztere kann einen be-
liebigen Pfad ersetzen.
4.3.3 Dateien vom Build-Prozess ausschlieen
In manchen Situationen ist es angebracht, ganz bestimmte Dateien von
der bersetzung auszuschlieen. Unschn knnte man dies realisieren,
indem die Sufxe im Namen der Dateien einfach verndert. Auch mit
dem eben vorgestellten Konzept von Quellverzeichnis und Filtern lsst
sich die Aufgabe nur umstndlich erfllen.
Glcklicherweise existiert noch eine einfache Methode: Das CDT-
Plugin stellt die Funktion Exclude from build... im Kontextmen aller
unter seiner Kontrolle bendlichen Ressourcen bereit. Der daraufhin
erscheinende Dialog (Abbildung 4-9) lsst Sie sogar die Konguratio-
nen angeben, fr die der Ausschluss gelten soll. Realisiert wird diese
Funktion letztendlich ber die Exklusionslter, ausgeschlossene Datei-
en nden Sie also dort wieder.
Abb. 4-9
Ausschlieen von
Dateien
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
190 4 Der Build-Prozess
4.3.4 Custom Build
In ganz anderen Situationen ist es dann wiederum sinnvoll, die berset-
zung einer Datei mit alternativen Optionen zu versehen. Auch wenn es
sehr selten ist, kann es hin und wieder passieren, dass die bersetzung
eines Quelltextes in hchster Optimierungsstufe zu einem unbrauch-
baren Ergebnis fhrt. Wenn der Fehler nicht unmittelbar im Quelltext
selbst zu nden ist, mchte man die Optimierungsstufe nur fr den feh-
leranflligen Quelltext anpassen, zumindest so lange, bis der Compiler
ein Update erfhrt, das das Problem beiseiteschafft.
Fehler im Compiler schnell den Entwicklern melden
Fr den Fall, dass Sie tatschlich der Meinung sind, einen Optimierungs-
fehler des Compilers entdeckt zu haben, so zgern Sie nicht, die ent-
sprechende Stelle in einen mglichst kleinen Testfall zu extrahieren und
diesen den Entwicklern des Compilers zukommen zu lassen. Das erhht
die Chance auf einen Fix ungemein.
Hierfr hat CDT eine sehr einfache Lsung parat: Fast alle fr den
bersetzungsvorgang relevanten Einstellungen lassen sich fr jede Res-
source, also fr jede Datei und jeden Ordner, separat denieren. Wie
das geht, wird in Abschnitt 4.5 erklrt. Zuvor werden die fr das Bau-
en von C/C++-Projekten relevanten Einstellungen vorgestellt.
4.4 Einstellungen fr C/C++-Projekte
Die Parameter eines bersetzungsvorganges bestimmen, wie Ihre Quell-
dateien zu einem ausfhrbaren Programm zusammengefhrt werden.
Im vorherigen Abschnitt wurde zunchst erlutert, wie Sie andwen-
dungsspezische Einstellungen der Parameter mit Hilfe von spezischen
Kongurationen verwalten. Es ist dort zum Beispiel die Liste der Quell-
verzeichnisse beschrieben worden, die einen solchen kongurationsspe-
zischen Parameter darstellt. Was Sie sonst noch alles auf Projektebene
einstellen knnen, erfahren Sie im Folgenden. Es handelt sich hierbei
um eine Beschreibung relevanter Seiten in den Projekteigenschaften, de-
ren Einblick Sie z. B. mit dem Menpunkt Project > Properties erhalten.
4.4.1 C/C++ Build
Hier werden ganz allgemeine Optionen in Bezug auf das bersetzen des
Projekts gendert. Sie nehmen zum Beispiel die nicht ganz unwichtige
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.4 Einstellungen fr C/C++-Projekte 191
Einstellung ber die Verantwortlichkeit des bersetzungsvorgangs vor,
entscheiden also, ob die Kontrolle darber Ihnen oder CDT obliegt.
Hierfr stehen auf der Seite Register zur Verfgung: Builder Settings
und Behaviour.
Abb. 4-10
Builder-Einstellungen
Im Kasten Builder legen Sie fest, welche Art von Builder verwendet
werden soll. Sie haben bei Builder type die Auswahl zwischen dem
External Builder, so dass sich CDT beim Bauen des Projekts ei-
nes externen Programmes bedient, das bei einer Build-Anweisung
zu einem auch explizit bei Build command benennbaren Make-
Programm zur Abarbeitung geschickt wird und dem
Internal Builder, um auf den Umweg des expliziten Anlegens eines
Makeles zu verzichten. Das Aufrufen der Programme aus einer
Toolchain geschieht dann direkt ber CDT. Der Vorteil an dieser
Option ist natrlich ein Performanzgewinn in der bersetzung des
Programms. Allerdings knnen Sie den Quelltext dann tatschlich
nur innerhalb von Eclipse mit Hilfe von CDT bersetzen.
Fllt Ihre Wahl auf den External Builder, so treffen Sie im Kasten Ma-
kele generation mit der Option Generate Makeles automatically die
Entscheidung, ob das Makele nun durch CDT selbst erzeugt wird oder
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
192 4 Der Build-Prozess
ob Sie diese Aufgabe doch selbst in die Hand nehmen mchten. Im ers-
teren Fall gibt Ihnen die Option Expand Env. Variable Refs in Makeles
die Mglichkeit zu bestimmen, ob im Makele potenziell benutzte Um-
gebungsvariablen bei der Erzeugung des Makeles ersetzt werden sollen
oder erst beim Abarbeiten des Makeles. Selbstverstndlich sollte sich
das angegebene externe Programm mit Makeles verstehen.
Haben Sie sich allerdings dafr entschieden, die Steuerung der
bersetzung selbst in die Hand zu nehmen, dann geben Sie bei Build
location das auch mit Build-Variablen spezizierbare Verzeichnis an,
das beim Bauen als Arbeitsverzeichnis genutzt wird. Die sich darunter
bendenden Buttons bieten hierzu Hilfestellung.
Beachtet werden sollte, dass sich bei neueren Versionen von CDT
Managed-Make-Projekte wie Makele-Projekte verhalten, wenn Sie die
Option zum Generieren des Makeles abschalten. Sie drfen dann ohne
Schwierigkeiten ein eigenes Makele hinzufgen und die Build location
anpassen. Dagegen sind Projekte, die als Makele-basiert angelegt wor-
den sind, im Nachhinein nicht auf direktem Wege zu einem von CDT
verwalteten Projekt umwandelbar: Die Schaltchen sind deaktiviert.
Abb. 4-11
Verhalten
In der Registerkarte Behaviour legen Sie allgemeine Verhaltensweisen
bezglich der bersetzung fest. Darunter benden sich im Kasten Build
settings die Optionen:
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.4 Einstellungen fr C/C++-Projekte 193
Stop on rst build error, um den bersetzungsvorgang beim Auf-
tauchen des ersten Fehlers zu stoppen, und
Use parallel build, um das bersetzen eines groen Projekts zu be-
schleunigen, falls Ihr Rechner mehrere Prozessoren oder einen Pro-
zessor mit mehreren Kernen besitzt. Die Auswahl hat letztendlich
zur Folge, dass mehrere Quelltexte gleichzeitig bersetzt werden.
Bei der Benutzung eines externen Builders wird die Option -j an
das Kommando bergeben. Die Anzahl der parallelen Jobs knnen
Sie explizit anzeigen oder automatisch whlen lassen.
ImKasten Workbench Build Behaviour entscheiden Sie schlielich noch
ber die Aktivitt diverser Optionen, die bestimmte Ereignisse der
Eclipse-Workbench betreffen. Dazu zhlen:
Build on resource save (Auto build). Wenn diese Option aktiv ist,
dann wird der Build-Vorgang nach einem Speichervorgang initiiert.
Build (Incremental build). Nur wenn diese Option aktiviert ist,
dann wird das Bauen des Projekts beim Absetzen eines Build-
Kommandos (z. B. mit Hilfe des Buttons Build active conguration
in der Toolbar) untersttzt. Sinnvollerweise sollte dies immer ak-
tiv sein, ansonsten knnen Sie das Projekt zumindest innerhalb von
Eclipse nicht bauen lassen.
Clean. Das Clean-Kommando wird untersttzt.
Den Namen des Make Targets, das bei dem Ereignis gebaut wird, geben Andere Namen fr
Targets angeben Sie direkt daneben an. Das Build-System lsst sich hiermit an Make-
les anpassen, die andere Targets fr die gewnschte Operation denie-
ren. Beispielsweise ist es denkbar, anstelle des Targets clean das Tar-
get maintainer-clean anzugeben. Zudem ist die Benutzung von Build-
Variablen erlaubt, was Ihnen noch mehr Spielraum gibt. Fr die alltg-
liche Arbeit sollten die beiden Targets jedoch ausreichend sein. Wenn
Sie den internen Builder benutzen, dann sind diese Optionen nicht ver-
fgbar. Die Angabe eines Targets hat bei Managed-Make-Projekten oh-
nehin wenig Sinn. Wie Sie jedoch fr Makele-Projekte andere Targets
bauen, wird Ihnen in Abschnitt 4.6 gezeigt.
4.4.2 Discovery Options
Das Verhalten des Scanner Conguration Builder, der die internen
Header-Dateipfade und Symbole des Compilers ermittelt, lsst sich in
den Einstellungen Discovery Options modizieren. Abbildung 4-12 il-
lustriert diese Seite, whrend in Tabelle 4-1 eine Beschreibung der all-
gemeinen Optionen zu nden ist.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
194 4 Der Build-Prozess
Abb. 4-12
Discovery-Optionen
Tab. 4-1
Allgemeine Optionen
Name Bedeutung
Discover proles scope Legt den Gltigkeitsbereich der Einstellungen
auf der Seite fest: fr jede Sprache einzeln (Per
Language) oder fr die gesamte Konguration
(Conguration-wide)
Automated discovery
of path and symbols
Soll CDT versuchen, Pfade und Symbole
automatisch zu bestimmen?
Report path detection
problems
Probleme bei der Erkennung von Pfaden
werden angezeigt.
Discovery prole Erkennungsprol (siehe Text)
Auf welche Weise CDT an die Daten kommt, deniert das Erkennungs-
prol (engl. discovery prole). Es stehen
GCC per project scanner info prole und
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.4 Einstellungen fr C/C++-Projekte 195
Managed Build System per project scanner info prole
zur Auswahl, wobei letztere Option in diversen Ausfhrungen erschei-
nen kann. Zustzlich knnen andere Prole angezeigt werden, falls Sie
weitere CDT-Features installiert haben.
Je nach selektiertem Prol stehen Ihnen weitere Optionen zur Ver-
fgung, die dann im Kasten Discovery prole options abgebildet wer-
den. Die Parameter der beiden oben genannten Prole sind dabei in
Tabelle 4-2 beschrieben.
Tab. 4-2
Optionen der
GCC-basierten Prole
Name Bedeutung
Enable build output
scanner info discovery
Es wird in der Konsolenausgabe nach Pfaden
und Symbolen gesucht.
Load build output
from le
Anstelle der Konsolenausgabe durchsucht
CDT eine Datei nach Informationen.
Enable generate
scanner info command
CDT startet den Compiler mit den Optionen
-E -P -v -dD specs.c und die parst dessen
Ausgabe.
Compiler invocation
command
Sie spezizieren den Namen des Compiler, der
bei obiger Aktion aufgerufen wird.
Compiler invocation
arguments
Hier geben Sie zustzlichen Argumente fr
den Compileraufruf an.
Einblick auf das Ergebnis des Scanners haben Sie im Includes-Ordner,
der sich in einem Navigations-View bendet. Des Weiteren nden Sie
es auf der Einstellungsseite Path and Symbols wieder. Die Beschreibung
dieser Seite ist Thema des folgenden Unterabschnitts.
4.4.3 Paths and Symbols
Die Seite Paths and Symbols bendet sich in der Gruppe C/C++ Ge-
neral. Die Einstellungen beeinussen nicht nur den Build-Prozess, son-
dern auch andere CDT-Funktionen wie beispielsweise den Indexer. In
verschiedenen Registern legen Sie die Include-Pfade, die vordenierten
Symbole, die einzubindenden Bibliotheken und ihre Pfade, die Quell-
verzeichnisse sowie referenzierte Projekte fest. In Abbildung 4-13 z. B.
ist das Register fr Symbole im Vordergrund.
Die ersten vier Register Includes, Symbols, Libraries und Library Paths
lassen sich hnlich bedienen. Mit Add... fgen Sie ein neues Element
hinzu, mit Edit... bearbeiten und mit Delete lschen Sie das ausge-
whlte Element. Fest im Compiler eingebaute Elemente, die durch den
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
196 4 Der Build-Prozess
Abb. 4-13
Register Symbols bei
Paths and Symbols
Discover-Scanner entdeckt wurden, werden nur bei aktivierter Check-
box Show build-in values angezeigt. Alle von Ihnen hinzugefgten
oder berschriebenen Elemente sind fett ausgezeichnet. Da Include-
Verzeichnisse und Symbole Eingaben fr den Compiler sind, existiert
noch eine Auswahl, in der Sie die Programmiersprache festlegen. Eben-
so knnen Sie die Einstellungen importieren und exportieren, die in
beiden Registern vorgenommen wird.
Im Register References legen Sie die Projekte fest, auf die sich das
aktuelle Projekt bezieht. Die Bedeutung der Einstellungen vom letzten
Register wurde ausgiebig in Abschnitt 4.3.2 ab Seite 187 behandelt.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.4 Einstellungen fr C/C++-Projekte 197
Detektierte Pfade lschen
Einmal detektierte Include-Pfade oder Symbole sind derzeit
nicht mit Bordmitteln zu entfernen. Wenn dies dennoch ein-
mal erforderlich sein sollte, z. B. wenn Sie eine neue Compiler-
Version installieren, dann wechseln Sie mit einem Dateimana-
ger oder in der Kommandozeile in das Workspace-Verzeichnis
.metadata/.plugins/org.eclipse.cdt.make.core. Dort nden Sie
Dateien der Form <Projektname>.sc vor, die alle durch den Discovery-
Scanner entdeckten Pfade enthlt. Lschen Sie die fr das Projekt
gltige Datei, damit nach einem Neustart das Projekt von den bisherigen
eingebauten Pfaden und Symbolen befreit ist.
4.4.4 Environment
Die Seite Environment widmet sich den Umgebungsvariablen, die allen
Kind-Prozessen mitgegeben werden, also u.a. allen aufgerufenen Werk-
zeugen. Wie in Abbildung 4-14 zu sehen ist, wird ein groer Teil des
verfgbaren Platzes von einer Liste eingenommen, die in jeder Zeile
den Namen, den Inhalt und den Denitionsursprung einer Umgebungs-
variablen enthlt.
Abb. 4-14
Die Seite fr
Umgebungsvariablen
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
198 4 Der Build-Prozess
Abb. 4-15
Eine neue
Umgebungsvariable
denieren
Rechts neben der Liste benden sich die Buttons, die Ihnen bei der Ver-
waltung ntzlich sind.
Mit New... legen Sie eine neue Umgebungsvariable an. Ein Klick
auf die Schaltche bringt das in Abbildung 4-15 gezeigte Fenster
zum Vorschein. Hier werden Sie aufgefordert, den Namen und den
Wert der Variablen zu denieren. Der Wert einer Variablen kann
dabei eine Zeichenkette in Kombination mit einer Build-Variablen
der Form ${Platzhalter} beinhalten, die dann erst beim Aufruf ei-
nes Werkzeugs ersetzt werden. Bevor Sie mit OK die Eingaben be-
sttigen, knnen Sie mit Add to all congurations veranlassen, dass
Ihre Eingaben nicht nur fr die momentan ausgewhlte Kongu-
ration bernommen werden, sondern auch fr all die anderen im
Projekt vorhandenen Kongurationen.
Mit Select... erscheint eine Auswahl aller der Eclipse-Umgebung zu-
gehrigen Umgebungsvariablen inklusive deren aktuell zugewiese-
nen Werte. Mit Klick auf OK werden die markierten Variablen der
Umgebungsvariablenliste mit dem angezeigten Inhalt hinzugefgt,
d. h. also nicht als Platzhalter. Auch hier haben Sie die Option, die
nderungen mit Add to all congurations bei allen Konguratio-
nen gleichzeitig durchzufhren.
Mit Edit... bearbeiten Sie die Eigenschaften der gerade angewhlte
Variable. Mit der Ausnahme, dass Sie hier den Namen der Varia-
blen nicht ndern drfen, entspricht die Auswahl dem Hinzufgen
einer Variablen.
Mit Delete entfernen Sie den selektierten Eintrag.
Mit Undene setzen Sie eine Variable explizit als nicht deniert.
Dieser Wert hat nur wirklich Sinn, wenn die Variablen der aktu-
ellen Umgebung hinzugefgt werden. In dem Fall machen Sie eine
vorherige Denition rckgngig.
Unter der Variablenliste bendet sich eine weitere Auswahl. Selektieren
Sie dort Append variables to native environment, falls die spezizierten
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.4 Einstellungen fr C/C++-Projekte 199
Variablen lediglich zu der aktuellen Umgebung
1
hinzugefgt werden
sollen. Andernfalls whlen Sie Replace native environment with speci-
ed one an, so dass die Variablen die tatschliche Umgebung darstellen.
Erwhnenswert ist noch, dass die Umgebungsvariablen PATH,
PWD und CWD zumindest bei der Verwendung des rohen CDT im-
mer erscheinen und nicht gelscht werden knnen. Um dennoch ei-
ne Differenzierung zwischen eingebauten und von Ihnen spezizierten
Variablen zu gewhrleisten, besitzen letztere nicht nur den Ursprung
USER:CONFIG, sondern auch eine fette Textauszeichnung.
4.4.5 Logging
Hier knnen Sie einstellen, ob die Ausgaben der Build-Tools in eine
Datei geschrieben werden soll, und gegebenenfalls ihren Pfad angeben.
4.4.6 Settings
Die umfangreichsten Einstellungen in Hinblick auf das Bauen von Pro-
jekten nehmen Sie auf der Settings-Seite vor. Der Aufbau der Seite wird
thematisch durch die fnf Register untergliedert:
Mit Tool Settings beeinussen Sie Einstellungen der Werkzeuge ei-
ner Toolchain. Dazu zhlen die wichtigen Compiler- und Linker-
optionen.
Unter dem Register Build Steps knnen Sie Kommandos angeben,
die vor oder nach dem Bauen aufgerufen werden.
Bei Build Artifact denieren Sie wichtige Attribute bzgl. des Resul-
tats des Projekts.
In Binary Parsers aktivieren Sie die Parser fr Binrdateien, wie
z. B. ausfhrbare Programme.
Schlielich legen Sie in Error Parsers die Parser fest, die auf die
Ausgabe der bersetzungswerkzeuge angewandt werden.
Im Folgenden erfahren Sie mehr ber die Einstellungsmglichkeiten.
Tool Settings
Unter dem Reiter Tool Settings verbergen sich Einstellungen fr Para-
meter, die den einzelnen Werkzeugen der Toolchain bergeben werden,
also z. B. dem Compiler und Linker. Die Werkzeuge nden Sie dabei als
aufklappbare Elemente in einer Liste wieder. Eine Ebene tiefer werden
die Optionen weiter in thematisch hnliche Gruppen eingeteilt. Klicken
1
Die aktuelle Umgebung ist in der Regel die, in der Eclipse gestartet wurde,
plus Eclipse- und CDT-spezische Variablen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
200 4 Der Build-Prozess
Sie eine Gruppe an, um die Einstellmglichkeiten zum Vorschein zu
bringen.
Kenner der GNU Compiler Collection sollten beim Zurechtnden
in den Einstellungen keine Probleme haben, werden die zum Klartext
korrespondierenden Argumente doch in Klammern dargestellt. Wn-
schenswert fr GCC-Neulinge wre in diesem Zusammenhang, dass
detaillierte Beschreibungen der einzelnen Optionen auch innerhalb von
CDT abgerufen werden knnen, sei es ber Tooltips oder ber die dy-
namische Hilfe. Die Tabellen 4-3 und 4-4 geben Ihnen einen berblick,
welche Bereiche die einzelnen Gruppen abdecken.
Tab. 4-3
Einstellungen fr
Compiler
Name Gruppe
Preprocessor Einstellungen fr den Prprozessor, ggf. auch
Symbole
Symbols Vordenierbare Symbole
Includes Suchpfade fr Include-Dateien
Optimization Optimierungsstufen des Compilers
Debugging Welche Art von Debuginformationen werden
eingebunden?
Warnings Pingeligkeit des Compilers
Miscellaneous Zustzliche Flags
Tab. 4-4
Einstellungen fr Linker
Name Gruppe
General Allgemeine Optionen, z. B., ob der
Startup-Code eingebunden wird
Libraries Hinzuzulinkende Bibliotheken und ihre
Suchpfade
Miscellaneous Enthlt verschiedene Optionen, z. B. ber
zustzlich zu linkende Objekte
Shared Library Settings Beinhaltet Einstellungen, die das Erzeugen
dynamischer Bibliotheken betreffen
Mit einem Klick auf einen bergeordneten Werkzeugeintrag erscheint
wie in Abbildung 4-16 eine Zusammenfassung aller verwendeten Op-
tionen, die beim Werkzeugaufruf benutzt werden sollen. Zustzlich
lsst sich
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.4 Einstellungen fr C/C++-Projekte 201
der Name des aufzurufenden Tools ndern und
die Form des durch CDT (oder Make) abgesetzten Kommandos mit
Hilfe von Platzhaltern anpassen.
Abb. 4-16
bersicht ber die
Parameter eines
Werkzeugs
Letzter Punkt bedarf schon aufgrund der Bezeichnung als Expert set- Experteneinstellungen
ting einer genaueren Erluterung, denn damit lsst sich der berset-
zungsvorgang durchaus als unbrauchbar gestalten. Per Vorgabe lautet
der Eintrag bei allen Werkzeugen der GNU Compiler Collection:
${COMMAND} ${FLAGS}
${OUTPUT
_
FLAG}${OUTPUT
_
PREFIX}${OUTPUT} ${INPUTS}
Die Platzhalter bedeuten dabei im Einzelnen:
${COMMAND} reprsentiert den Namen des Kommandos, also den In-
halt des Textfelds Command.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
202 4 Der Build-Prozess
${FLAGS} steht fr alle Compiler-Flags, also den Inhalt von All opti-
ons.
${OUTPUT
_
FLAG} enthlt das Output-Flag, also -o bei der GNU Com-
piler Collection.
${OUTPUT
_
PREFIX} steht fr das Prx der Ausgabedatei, also z. B. lib
bei einem Archiv oder einer Bibliothek.
${OUTPUT} entspricht der Zieldatei, also z. B. dirscanner.o.
${INPUTS} steht imAllgemeinen fr Eingabedateien. Bei einem Com-
pileraufruf ist dies in der Regel nur die zu bersetzende Quelltext-
datei, also z. B. dirscanner.cpp, whrend es bei einem Linkeraufruf
mehrere Dateien sein knnen.
Beide Optionen mssen eigentlich nur bei speziellen Anforderungen an-
gepasst werden. Wenn Sie beispielsweise eine bestimmte Version vom
C++-Frontend g++ benutzen mchten, etwa die Version 4.3, weil das
Frontend auf Ihrem Rechner standardmig die Version 4.2 verwen-
det, tragen Sie bei Command anstelle von g++ einfach g++-4.3 ein.
Build Steps
Auf der Registerseite Build Steps geben Sie unter Pre-build steps ein
Kommando an, das aufgerufen wird, bevor die eigentliche bersetzung
beginnt. Das Gegenstck hierzu ist Post-build steps, wo Sie ein Kom-
mando angeben, das aufgerufen wird, nachdem die bersetzung erfolg-
reich abgeschlossen wurde. Bei beiden Varianten haben Sie die Mglich-
keit, unter Description jeweils eine Beschreibung anzugeben, die dann
beim Abarbeiten auf den Bildschirm ausgegeben wird.
Build Artifact
Auf der Seite Build Artifact, die in Abbildung 4-17 illustriert wird,
stellen Sie wichtige Attribute des eigentlichen Produkts ein. Unter ei-
nem Produkt im Sinne von CDT wird das letztendliche Resultat ei-
ner Toolchain verstanden, das fr gewhnlich im Binaries-Ordner des
C/C++ Projects-View nach einer erfolgreichen bersetzung zu nden
ist, sofern es sich beim Produkt um eine Binrdatei handelt, mit der
CDT unter Verwendung eines Binary Parsers umzugehen wei.
Mittels der Combobox bei Artifact type spezizieren Sie die Art des Art des Produkts
Produkts. Die Auswahl hngt dabei von der aktiven Toolchain ab und
stimmt mit den Mglichkeiten berein, die beim Erstellen des Projekts
angeboten werden. Falls z. B. eine in CDT enthaltende Toolchain ak-
tiv ist, dann stehen demzufolge Executable, Shared Library und Static
Library zur Verfgung.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.4 Einstellungen fr C/C++-Projekte 203
Abb. 4-17
Register Build Artifact
Den Namen des Produkts geben Sie darunter bei Artifact name an. Er Name des Produkts
muss dabei keineswegs mit dem Namen des einschlieenden Projekts
bereinstimmen. Trgt man hier aber die Build-Variable ${ProjName}
ein, so wie es die Vorgabe ist, dann wird der Name des Projekts ver-
wendet.
Mit Artifact extension denieren Sie, welche Dateinamenser- Sufx des Produkts
weiterung das Produkt erfhrt. Das Sufx ist dabei im Eingabefeld ohne
Punkt anzugeben. Bei einer Windows-Toolchain und einem ausfhrba-
ren Programm als Ziel wird das Sufx in aller Regel exe lauten, wo-
hingegen der Dateiname einer Shared Library unter Linux auf so endet.
Statische Bibliotheken enden auf a, wenn ein GNU Compiler verwen-
det wird. Sobald Sie die Art des Produkts ndern, wird diese Einstellung
auf einen sinnvollen Vorgabewert gesetzt.
Mit Output prex knnen Sie das Prx vom Namen des Produkts Prx des Produkts
festlegen. Bei statischen Bibliotheken ist z. B. lib gebruchlich. Auch
dieses Feld wird auf einen sinnvollen Wert gesetzt, falls Sie die Art des
Produkts ndern.
Binary Parsers
Ist ein Projekt einmal fehlerfrei bersetzt worden, so sollten sich an-
schlieend Binrdateien im Projekt benden. Um auf diese schnell zu-
greifen zu knnen, werden derartige Dateien im virtuellen Binaries-
Ordner des C/C++ Projects-Views hinzugefgt. Voraussetzung dafr
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
204 4 Der Build-Prozess
ist, dass CDT berhaupt in der Lage ist, die Dateien als ausfhrbare
Binrdatei zu identizieren.
Da jedoch die Formate fr Binrdateien beinahe so variabel sind, Binrparser
analysieren
ausfhrbare Dateien.
wie es verschiedene Rechnerplattformen gibt, fhrten die Entwickler
von CDT das Konzept der Binrparser ein. Deren Aufgabe ist es, Da-
teien nach ihrem binren Gehalt auszuwerten. Dabei werden sie nicht
nur als solche identiziert, sondern auch auf Informationen wie enthal-
tene Symbole untersucht.
Abb. 4-18
Binary Parsers
Welche Binrformate im Projekt untersttzt werden, kann man auf
der Registerseite Binary Parsers spezizieren. Die Seite wird in Abbil-
dung 4-18 dargestellt und erlaubt als einzige nur globale Projekteinstel-
lungen die Kongurationsauswahl ist deaktiviert. Unter dem Register
bendet sich eine Liste, die alle verfgbaren Binrparser umfasst. Mit-
tels Hkchen knnen Sie einen Binrparser aktivieren. Zustzlich kn-
nen Sie die Reihenfolge festlegen, indem Sie den selektierten Eintrag mit
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.4 Einstellungen fr C/C++-Projekte 205
Hilfe der Buttons Move Up und Move Down nach oben (d. h. frhere
Anwendung) oder nach unten (d. h. sptere Anwendung) verschieben.
Im Folgenden wird kurz der Anwendungsbereich der in CDT mit-
gelieferten Parser beschrieben.
Der Cygwin PE Parser ist ein Parser, der das unter Windows ver-
wendete Portable Executable-Format versteht. Aktivieren Sie die-
sen Parser, falls Sie Ihre Programme fr Windows kompilieren und
dabei den Cygwin-Compiler benutzen.
Elf Parser. ELF ist die Kurzform fr Executable and Linking For-
mat. Es ist das Format, das die meisten Unix-hnlichen Betriebssys-
teme wie z. B. Linux oder diverse BSD-Varianten benutzen. Aber
auch nicht Unix-hnliche Betriebssysteme wie AmigaOS 4.x ver-
wenden ELF. Aktivieren Sie die Optionen, wenn Sie Ihre Projekte
fr eine solche ELF-untersttzende Plattform bersetzen.
Der Mach-OParser ist fr das Mach-O-Format verantwortlich, das
u.a. in Mac OS X Verwendung ndet und sogenannte Fat Binaries
untersttzt. Falls Sie Programme fr Apples Betriebssystem erzeu-
gen wollen, so aktivieren Sie diese Option.
Der HP-UX SOM Parser zielt auf das Dateiformat ab, das fr 32-
bittigen Code fr die Prozessorfamilie PA-RISC unter dem Betriebs-
system HP-UX verwendet wurde.
Der PE Windows Parser ist ebenfalls ein Parser fr das in Windows
benutzte PE-Format. Die Implementation verwendet im Gegensatz
zu obigem PE-Parser allerdings keine externen Programme, um die
Informationen zu extrahieren. Verwenden Sie diesen Parser, falls Sie
auf Ihrem Windows-Rechner keine Cygwin-Umgebung eingerich-
tet haben oder einen Windows-Code-erzeugenden Cross-Compiler
verwenden.
Der GNU Elf Parser ist ebenfalls ein Parser fr ELF-Dateien, der
sich allerdings fr manche Aufgaben auf externe Programme sttzt.
Aktivieren Sie diesen Parser, wenn der Elf Parser nicht erfolgreich
ist.
Einige der eben aufgefhrten Parser erlauben noch weitere Einstellun-
gen, die im Kasten Binary Parser Options vorgenommen werden kn-
nen. Diese erlauben hauptschlich die Angabe der Pfade zu den ver-
wendeten Programmen, die zu dem GNU-Paket binutils gehren. Zu
den Programmen, die CDT verwenden, zhlen:
addr2line, um die zu einer Adresse gehrende Programmzeile im
Quelltext zu bestimmen,
c++lt, um die Bezeichner fr Methoden im Objekt-Code wieder zu
korrekten C++-Bezeichnern zu transformieren,
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
206 4 Der Build-Prozess
cygpath, um Windows-Pfade in POSIX-kompatible Formate zu
transformieren und umgekehrt, sowie
nm, um die in Objekt-Dateien benutzten Symbole zu extrahieren.
Error Parsers
Error Parser sind fr das Parsen der Ausgabe von den Werkzeugen des
bersetzungsprozesses verantwortlich. Die Einstellungen, die auf der
Registerseite vorgenommen werden, sind Thema von Abschnitt 4.7.4.
4.4.7 Tool Chain Editor
Standardmig ist die Toolchain ausgewhlt, die Sie beim Kreieren des
Projekts angegeben haben. Damit wird prinzipiell festgelegt, welche
Werkzeuge verwendet werden knnen, was mit den Arten von Quell-
textdateien einhergeht, mit denen CDT beim bersetzen etwas anzu-
fangen wei. Auf der Seite des Toolchain-Editors, dargestellt in Abbil-
dung 4-19, knnen Sie allerdings die Werkzeuge der aktuellen Kongu-
ration zum Teil anpassen. Sie haben allerdings keine vollstndige Kon-
trolle darber, weil die eigentlichen Werkzeuge und ihre Eigenschaften,
z. B. fr welche Dateiendung sie gelten, nicht selbst fr ein Projekt de-
niert werden knnen. Deren Denition ist den Entwicklern von CDT
sowie Plugin-Anbietern vorbehalten. Sicherlich wre es sinnvoll, dies
auch den Benutzern von CDT zu gestatten.
Unter Current toolchain knnen Sie zunchst in einer Combo-
box aus dem Pool aller Toolchains eine passende Toolchain auswh-
len. Dabei beschrnken Sie durch das Aktivieren von Display compa-
tible toolchains only die Auswahl auf kompatible Toolchains: Der XL-
C/C++-Compiler von IBM, dessen Anbindung ber ein Extra-Feature
installiert wird, wrde dann z. B. nicht erscheinen, wenn die aktuel-
le Toolchain auf Linux GCC gesetzt wre. Das Gleiche gilt in entge-
gengesetzter Richtung. Sobald Sie die Toolchain wechseln, erfhrt auch
die Liste unter Used tools, in der alle benutzten Werkzeuge dargestellt
werden, eine nderung. Allerdings ist bei einer nderung Vorsicht ge-
boten: Alle Einstellungen, die den Discoverer sowie die Parameter der
Werkzeuge betreffen, gehen (zumindest bei der Version 7.0 von CDT)
verloren. Richtig interessant wird es, wenn Sie Select Tools... whlen.
Bevor wir dazu kommen, sei erwhnt, dass Sie unter Current buil-
der ein den Builder whlen knnen, also ob der interne oder externe
Builder benutzt werden soll. Diese Einstellung entspricht letzten Endes
genau der Einstellung, die bereits in Abschnitt 4.4.1 beschrieben wurde.
Wenn Sie die bereits besprochene Schaltche Select Tools... bet-
tigen, erscheint das in Abbildung 4-20 gezeigte Fenster. Es besteht aus
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.4 Einstellungen fr C/C++-Projekte 207
Abb. 4-19
Die Seite des
Toolchain-Editors
zwei Listen, wobei die erste mit Available tools und die zweite mit Used
tools betitelt ist. In der ersten Liste knnen Sie ein Werkzeug aus allen
verfgbaren auswhlen, whrend die zweite die Werkzeuge zur Aus-
wahl anbietet, die momentan in der Toolchain Verwendung nden.
Abb. 4-20
Fenster, in dem die
Toolchain nach
Belieben angepasst
werden kann
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
208 4 Der Build-Prozess
Mit Hilfe des Buttons mit der Aufschrift Replace, der zwischen Kompatible Werkzeuge
knnen ausgetauscht
werden.
den beiden Listen zu nden ist, lsst sich ein angegebenes Paar aus-
tauschen. Dies gelingt allerdings nur, wenn die beiden Werkzeuge kom-
patibel sind, andernfalls ist der Button deaktiviert. Einen Hinweis auf
die Kompatibilitt der Werkzeuge untereinander geben Dreiecke vor
dem Namen des Werkzeugs. Werkzeuge sind kompatibel zueinander,
wenn sich dieselben Sorten von Eingabedateien in dieselben Sorten von
Ausgabedateien transformieren.
Standardmig deaktiviert sind auch die Buttons Add Tool und
Remove Tool. Sie werden erst benutzbar, wenn Sie die Option Allow
all changes aktivieren, so dass auch inkompatible nderungen in der
Werkzeugliste zugelassen werden. Damit knnen Sie dann Werkzeuge
nach Belieben zur Toolchain hinzufgen bzw. aus ihr entfernen.
Abschlieend bettigen Sie die vorgenommenen Einstellungen mit
OK oder verwerfen Sie mit Cancel.
4.4.8 Build Variables
Die Seite Build Variables ist die projektspezische Variante zu den in
Abschnitt 4.2.4 beschriebenen Build-Variablen mit globalem Gltig-
keitsbereich. Alle hier denierten Build-Variablen gelten demnach nur
im Kontext des Projekts. Die Bedienung erfolgt analog zur globalen
Variante.
4.5 Einstellungen fr Ressourcen
Whrend im letzten Abschnitt die Projekteigenschaften besprochen
wurden, sind jetzt die Eigenschaften aller anderen Ressourcen an der
Reihe. Das Ganze gestaltet sich nicht viel anders als das Anpassen der
Einstellungen fr das ganze Projekt, nur dass Sie anstelle des Projekts
eben die Ressource anklicken, um im Kontextmen das Properties-
Fenster hervorzurufen.
Bei Ordner- und Dateiressourcen ist dieses allerdings stark gekrzt,
wie in Abbildung 4-21 in der Liste links zu sehen ist. Wie bei den Pro-
jekteinstellungen knnen die Einstellungen mit Hilfe der Combobox
fr Kongurationen separat vorgenommen werden. Die Option Exclu-
de resource from build dient dem Zweck, die Ressource gnzlich vom
Build-Prozess auszuschlieen.
Fr die selektierbaren Seiten gilt, dass in ihnen teilweise andere Ei- Lokale Einstellungen
berschreiben
bergeordnete
Voreinstellungen.
genschaften modiziert werden knnen, als dies unter gleichnamigen
Seiten in den projektspezischen Einstellungen der Fall ist. Bevor diese
Unterschiede in den folgenden Abschnitten erlutert werden, sei noch
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.5 Einstellungen fr Ressourcen 209
Abb. 4-21
Mit Hilfe der
Eigenschaften von
Datei- und Ordner-
ressourcen knnen Sie
gezielt in den Build-
Prozess eingreifen.
erwhnt, dass einmal vorgenommene lokale Einstellungen gegenber
den gleichen Einstellungen der bergeordneten Ressource Vorrang ha-
ben.
Ressourcen, bei denen eine lokale Einstellung vorgenommen wur- Indikator fr genderte
Einstellungen de, werden mit Hilfe einer Dekoration, die einen winzigen Schrauben-
schlssel als Bild hat, im Navigations-Viewkenntlich gemacht. Da aber
nicht klar ist, welcher Parameter konkret gendert wurde, sind bei hu-
ger Anwendung dieser Funktion Verwirrungen nicht ausgeschlossen.
2
Um die spezischen nderungen an den Optionen rckgngig zu Lokale Einstellungen
zurcknehmen machen, knnen Sie vom Button Restore Defaults Gebrauch machen,
der in den Properties zu nden ist. Allerdings werden die Einstellungen
dann auf die von CDT vorgegebenen Werte gesetzt, also nicht auf die
vom umschlieenden Projekt. Mchten Sie die im Projekt eingestellten
Werte bernehmen, so whlen Sie die Datei, deren Konguration Sie
zurcksetzen mchten aus, bevor Sie den Kontextmeneintrag Build
Congurations > Resource Conguration > Reset to Default... anwh-
len. Abbildung 4-22 verdeutlicht diesen Vorgang.
2
Sollten Sie tatschlich einmal wissen wollen, welche Option Sie gendert
haben, dann empehlt es sich, die Datei .cproject zu begutachten.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
210 4 Der Build-Prozess
Abb. 4-22
Spezische
Konguration einer
Datei zurcksetzen
4.5.1 Discovery Options
Diese Seite erscheint, falls die in Bearbeitung bendliche Ressource
durch ein Compiler-Werkzeug verarbeitet werden kann, wozu fr ge-
whnliche alle Quelltextdateien, nicht aber Header-Dateien gehren.
Diese Seite stimmt mit der Seite berein, die Sie fr eine Projektres-
source an der Stelle sehen wrden. Die ausfhrliche Beschreibung der
Optionen nden Sie daher in Abschnitt 4.4.2.
Wieso sollte man aber in ein und demselben Projekt verschiedene
Discoverer verwenden? Die Antwort ndet sich in den nchsten beiden
Abschnitten. Dort wird gezeigt, dass nicht nur die Parameter der Werk-
zeuge fr jede Ressource gendert werden knnen, sondern auch die
Werkzeuge selbst. Es besteht folglich die Mglichkeit, einen anderen
Compiler zu verwenden, fr den dann vielleicht ein anderes Compiler
invocation command benutzt werden sollte.
4.5.2 Settings
Die Seite Settings erlaubt das Verhalten der Werkzeuge zu beeinussen.
In den eingeschrnkten Eigenschaften fr Ordner- oder Dateiressourcen
ist das Register Tool Settings zu nden. Fr Dateiressourcen kommt
noch Build steps hinzu.
Die Einstellungsmglichkeiten im Register Tool Settings sind mit
denen eines Projekts identisch, abgesehen davon, dass sich die Anzahl
der Werkzeuge reduziert, deren Optionen Sie variieren knnen. Bei Da-
teiressourcen wird, wie in Abbildung 4-21 erkenntlich, nur ein einziges
Werkzeug angezeigt.
Die Sache verhlt sich mit dem Register Build Steps, das in Ab-
bildung 4-23 dargestellt ist, anders. Die Seite besteht aus einem Kas-
ten Resource Custom Build Steps, innerhalb dessen Sie verglichen mit
der projektspezischen Einstellung gnzlich andere Parameter angeben
knnen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.5 Einstellungen fr Ressourcen 211
Abb. 4-23
Das Register Build
Steps fr
Dateiressourcen
Und zwar spezizieren Sie hier das fr die bersetzung herangezoge- Eigene Werkzeuge zum
bersetzen denieren ne Werkzeug ganz unabhngig von der aktuell gewhlten Toolchain
selbst. Hierfr stellen Sie die Combobox Custom Build Step Applica-
bility zunchst von Disable Custom Build Step auf Apply Custom Step
Overriding Other Tools.
Unter Additional input les geben Sie optional Dateien an, die ne- Weitere
Abhngigkeiten
festlegen
ben der gerade in Bearbeitung bendlichen Ressource im Build-Schritt
verwendet werden. Das Feld dient dem Zweck, dem Builder weitere
Abhngigkeiten bekannt zu geben. Der Build-Schritt wird also auch
ausgefhrt, wenn sich eine der spezizierten Dateien gendert hat.
Theoretisch kann ein benutzerdenierter Build-Schritt nicht nur die Weitere Ziele
spezizieren eigentliche Zielressource, sondern auch weitere Ressourcen erzeugen.
Damit der Builder davon in Kenntnis gesetzt wird, um beispielsweise
die Ressourcen in den Navigations-Views aktualisieren zu lassen, exis-
tiert das Feld Output le name(s), in dem die Dateinamen durch ein
Semikolon getrennt angegeben werden knnen.
Unter Command geben Sie das Kommando an, das bei der Abar- Das Kommando wird
vollstndig vom
Benutzer speziziert.
beitung der Ressource aufgerufen wird. Das Feld reprsentiert dabei
das vollstndige abgesetzte Kommando, d. h., dass Sie bei der Eingabe
auch die Kommandozeilenparameter bedenken mssen, inklusive der
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
212 4 Der Build-Prozess
zu bersetzenden Datei. Die Einstellungen im Register Tool Settings
sind wie auch im gleich behandelten Tool Chain Editor demnach hin-
fllig. Obwohl es in aktueller CDT-Version nicht gekennzeichnet ist,
knnen Sie hier jedoch Build-Variablen benutzen, was auch eine gewis-
se Flexibilitt zulsst. Beispielsweise bietet es sich an, die Optionen des
Kommandos in einer solchen Build-Variablen zuzuweisen.
Schlielich geben Sie bei Description eine kurze Beschreibung an.
Diese wird beim Arbeiten der Datei ausgegeben.
4.5.3 Tool Chain Editor
Ist die ausgewhlte Ressource ein Ordner, so bietet diese Seite die glei-
chen Einstellungsmglichkeiten wie die Seite fr Projekte, deren Be-
schreibung Sie in Abschnitt 4.4.7 nden. Fr Dateien ist die Ansicht
in Abbildung 4-24 dargestellt. Anstelle einer Toolchain whlen Sie hier
das Werkzeug in der Combobox unter Select tool direkt aus. Dabei wer-
den normalerweise nur kompatible Werkzeuge dargestellt, denn einen
C-Quelltext durch einen Assembler bersetzen zu lassen wird in den
seltensten Fllen zu einem Erfolg fhren. Durch das Deaktivieren der
Option Display compatible toolchains only heben Sie diese Einschrn-
kung dennoch auf.
Abb. 4-24
Der Toolchain-Editor
fr Dateien erlaubt die
explizite Angabe des
Werkzeugs.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.6 Makele-Projekte 213
4.5.4 Path and Symbols
Auch die Seite Path and Symbols lsst Anpassungen zu. Auf ihr knnen
sowohl Include-Pfade als auch Symbole datei- bzw. ordnerspezisch an-
gegeben werden. Einstellungen fr den Linker gibt es hingegen nicht.
Sie sind nur global zu denieren, da der Linker auf mehreren Objekten
agiert.
4.6 Makele-Projekte
Dass CDT auch Aufgaben des Build-Systems abnimmt, ist fr Einsteiger
in der C/C++-Programmierung sicher eine enorme Erleichterung. Aller-
dings geht diese recht bequeme Vorgehensweise mit Einschrnkungen in
der Flexibilitt einher. Andere als die von den Toolchain bereitgestellten
Aktionen lassen sich nur schwerlich von Benutzerseite integrieren. Pro-
jekte, die auf einem externen Build-Programm wie Make oder CMake
basieren, sind deshalb noch lange nicht vom Aussterben bedroht. Sol-
che Projekte werden in CDT unter der Angabe des Projekttyps Makele
project angelegt.
In den Projekteinstellungen, die ab Abschnitt 4.4 behandelt wur-
den, lassen sich Aktionen wie das Bauen oder das Aufrumen eines
Projekts mit Make Targets verknpfen. Wenn Sie die Verwaltung des
C- oder C++-Projekts selbst in die Hand nehmen, so haben Sie wahr-
scheinlich weitere Make Targets im Makele vorliegen. Auch die in der
Open-Source-Gemeinde beliebten Programme autoconf und automake
erzeugen Makeles mit einer Vielzahl weiterer Targets. Im Folgenden
wird erlutert, wie Sie innerhalb von CDT mit mehreren Make Targets
umgehen knnen.
4.6.1 Der Make Targets-View
Der Make Targets-View, der in Abbildung 4-25 zu sehen ist, stellt die
zentrale Stelle dar, um die Ziele der Projekte zu verwalten. In ihm wer-
den zunchst alle C/C++-Projekte dargestellt. Beim Aufklappen eines
Projekts erscheinen die Ziele, die CDT bekannt gemacht worden sind.
CDT ist also nicht in der Lage, die Ziele selbststndig aus dem Ma-
kele zu lesen. Dies mag zunchst wunderlich erscheinen, kann aber
durchaus als Vorteil angesehen werden. So fgen Sie Ziele hinzu, die
berhaupt nicht mit einem Makele verknpft sind.
Ist die Hierarchie eines Projekts sehr gro, so haben Sie mit Hilfe
der Buttons Home, Back und Go Into die Mglichkeit, innerhalb der
Hierarchie zu navigieren. Des Weiteren knnen Sie
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
214 4 Der Build-Prozess
mit Build Make Target das eingestellte Make-Programm mit ausge-
whltem Target als Argument starten oder
mit Hide Empty Folders alle Ordner, die kein deniertes Make Tar-
get besitzen, verstecken lassen.
Abb. 4-25
Make Targets-View.
Die mit einer grnen
Scheibe versehenen
Eintrge stellen
bekannte Ziele dar.
4.6.2 Make Targets hinzufgen
Um ein Target der Entwicklungsumgebung bekannt zu machen, bieten
sich mehrere Mglichkeiten an. Am einfachsten geht es ber den Make
Targets-View. Klicken Sie darin das Projekt oder Verzeichnis an, zu dem
Sie ein Make Target hinzufgen mchten. Anschlieend klicken Sie den
Button New Make Target an oder whlen Sie im Kontextmen den
Eintrag New.... Alternativ knnen Sie auch das Kontextmen ber dem
Projekt in einem Navigations-Viewhervorrufen und dort Make Targets
> Create... auswhlen. Ganz gleich welchen Weg Sie nehmen, ffnet
sich das in Abbildung 4-26 dargestellte Fenster, das von Ihnen weitere
Eingaben fordert.
Da wre einmal im oberen Teil des Fensters das Eingabefeld Target Angezeigten Namen
und Target
spezizieren
Name, in dem Sie z. B. den im Make Targets-View angezeigten Namen
des Ziels spezizieren. Im Feld Make Target geben Sie im Gegensatz
dazu den Namen des Ziels an, so wie er im Makele selbst deniert ist.
Zustzlich knnen noch weitere Einstellungen vorgenommen wer- Build-Kommando
denieren den, die einige globale Projekteinstellungen berschreiben, die in Ab-
schnitt 4.4.1 behandelt wurden. Dazu zhlen das aufzurufende Build-
Kommando unter Build command und Stop on rst build error. Neu
hingegen ist Run all project builders. Ist diese Option aktiviert, so wer-
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.6 Makele-Projekte 215
Abb. 4-26
Ein neues Make Target
erstellen
den alle im Projekt aktivierten Builder ausgefhrt, ansonsten wird nur
der CDT Builder gestartet.
Wie bei vielen Einstellungen von CDT ist auch hier die Benutzung Die Verwendung von
Build-Variablen von Build-Variablen gestattet. Die Ausung erfolgt beim Aufruf des
Programms.
Haben Sie ein Makele geffnet, dann nden Sie alle dort denier- Make Targets ber
Outline-View
hinzufgen
ten Make Targets im Outline-View wieder, so wie in Abschnitt 3.5.16
beschrieben wurde. Sie knnen ein Make Target bekannt machen, in-
dem Sie ber seinen Kontextmen den Eintrag Add make Target aus-
whlen.
4.6.3 Make Targets bauen
Zum Bauen eines Make Targets knnen Sie wie angesprochen das ent-
sprechende Ziel innerhalb des Make Targets-Views doppelklicken. Al-
ternativ benutzen Sie in einem Navigations-Viewim Kontextmen ber
dem Projekt den Eintrag Make Targets > Build..., um im daraufhin er-
scheinenden Fenster das gewnschte Ziel auszuwhlen.
Daraufhin wird das spezizierte Kommando mit dem angegebenen Weitere Builder starten
Target aufgerufen. Wurde bei der Angabe des Make Targets die Option
Run all project builders aktiviert, werden noch alle weiteren aktiven
Builder des Projekts gestartet. Das heit, falls Ihr C/C++-Projekt et-
wa den Scanner Conguration Builder benutzt, so wie es auch bei neu
erstellten C/C++-Projekten voreingestellt ist, werden ebenfalls die ein-
gestellten Discovery-Prole gestartet, die die im Compiler eingebauten
Header-Dateien bestimmen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
216 4 Der Build-Prozess
Das zuletzt gebaute Ziel knnen Sie erneut bauen lassen, indem Das zuletzt gebaute
Ziel erneut bauen Sie den Men Rebuild Last Target auswhlen. Dieselbe Aktion wird
ausgefhrt, wenn Sie F9 auf der Tastatur bettigen.
4.6.4 Make Targets entfernen
Natrlich knnen Sie ein Make Target auch wieder entfernen. Bringen
Sie das Kontextmen des zu lschenden Target im Make Targets-View
hervor und whlen Sie dort Delete Make Target aus.
4.6.5 Besonderheiten
Make Targets reprsentieren im Sinne von CDT nicht ausschlielich Make Targets knnen
benutzt werden, um
beliebige Programme
zu integrieren.
die Make Targets eines Makeles. Genau betrachtet stellen sie eher eine
allgemeine Funktionalitt bereit, um Programme aus Eclipse zu starten.
Auf diese Weise knnen Sie z. B. auch Skripte wie congure oder ganz
andere Programme einbinden.
Die Information, welche Make Targets hinzugefgt worden sind, Speicherort der
Make Targets wird in CDT 7.0 in der Datei .cproject abgelegt, so dass es auch Mit-
entwicklern ermglicht wird, auf Make Targets zuzugreifen.
4.7 Compiler-Ausgaben
Wenn die bersetzung im Gange ist, wird der Compiler frher oder
spter Ausgaben machen, sei es um den aktuellen Stand zu melden oder
um Fehler zu monieren. Wo sind diese Ausgaben in Eclipse zu nden?
4.7.1 Console
Es gibt zunchst einmal den Console-View, auf den schon einige Ma-
le verwiesen wurde. Dorthin werden Ausgaben von Ausgabestrmen
umgeleitet und gegebenenfalls Eingaben entgegengenommen. Da es
mehr als einen Ein- oder Ausgabestrom geben kann, beispielsweise
vom bersetzungsvorgang, vom ausgefhrten C-Programm, vom CVS-
Client usw., existieren eigentlich fast immer mehrere Konsolen, von de-
nen aber nur eine im Console-View angezeigt wird. Auch unterscheiden
sich je nach Konsolenart die angebotenen Interaktionsmglichkeiten.
Fr den Build-Prozess ist die Konsole mit dem Namen C-Build in-
teressant. Einen Console-View, der ein Exemplar davon beherbergt, se-
hen Sie in Abbildung 4-27. Dort wurde gerade ein bersetzungsvor-
gang beendet, wobei der Ablauf nicht ganz fehlerfrei war. Wichtige Aus-
gaben vom Compiler, wie die festgestellten Fehler im Quelltext, wer-
den standardmig mit einen roten Hintergrund kenntlich gemacht. Sie
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.7 Compiler-Ausgaben 217
Abb. 4-27
Console-View
knnen auf eine solche Meldung doppelklicken, um zur Zeile im Editor
zu gelangen, fr die das Problem vorliegt. Neben den Standard-Buttons
zum Minimieren oder Maximieren hlt der Console-View dafr die fol-
genden Buttons bereit (von links nach rechts):
Next Error. Selektiert im Console-View den nchsten Fehler in der
Liste.
Previous Error. Selektiert im Console-View den vorangegangenen
Fehler.
Show Error in Editor. Ist dieser Button aktiv, dann springt der Edi-
tor bei der Anwahl eines neuen Fehlers sofort zu der Stelle im Quell-
text.
Copy Build Log. Schreibt den aktuellen Inhalt in eine Datei.
Clear Console. Lscht den gesamten Inhalt der Konsole.
Pin Console. Die aktuelle Konsole wird nicht von einer anderen
verdrngt.
Display Selected Console. Dient zum zyklischen Umschalten zwi-
schen geffneten Konsolen. Das Pulldown-Men enthlt die Ein-
trge aller geffneten Konsolen.
Open Console. Das Pulldown-Men enthlt mgliche Konsolen,
z. B. die CVS Console, in der die Ausgaben des CVS-Client geschrie-
ben werden.
Weitere fr C/C++-Programmierer wichtige Konsolen sind die, die mit
der Ein- und Ausgabe von in Eclipse gestarteten Applikationen ver-
knpft sind. Deren Umgang wird im nchsten Kapitel in Abschnitt 5.3
beschrieben.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
218 4 Der Build-Prozess
4.7.2 Voreinstellungen zur Build-Konsole
Das Verhalten der Build-Konsole knnen Sie in den globalen Einstel-
lungen unter der Seite C/C++ > Build Console beeinussen. Die dort
prsentierte Ansicht nden Sie in Abbildung 4-28. Die Bedeutung der
Elemente wird in Tabelle 4-5 beschrieben.
Abb. 4-28
Voreinstellungen zur
Build-Konsole
4.7.3 Wie CDT Kommandoausgaben verarbeitet
Da CDT bekanntlich beliebige Werkzeuge, die ihrerseits unterschied- Error Parser
lich formatierte Meldungen auf den Bildschirm bringen, in den Build-
Prozess mit einbeziehen kann, setzt auch die Auswertung der Komman-
doausgaben Flexibilitt voraus. Die CDT-Entwickler haben sich hierfr
das Konzept der Error Parser ausgedacht, das hier nher beleuchtet
werden soll.
Error Parser sind oftmals speziell auf die Ausgabe eines einzigen
Werkzeugs zugeschnitten. Alle aktiven Parser werden Zeile fr Zeile
auf den Ausgabestrom angesetzt, der auch im Console-View zur Anzei-
ge gebracht wird. Eine von einem Parser erfolgreich eingelesene Infor-
mation wird zum Framework weitergeleitet, das diese dann in aufbe-
reiteter Form zum Benutzer reicht.
CDT bringt in der Grundausstattung fr die wichtigsten Werkzeuge
die Error Parser mit sich. Dazu zhlen Parser fr den Compiler, Linker
und Make der GNU Compiler Collection. Die Einstellung, welche Error
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.7 Compiler-Ausgaben 219
Tab. 4-5
Optionen der
Build-Konsole
Name Bedeutung
Always clear console before
building
Der Konsoleninhalt wird vor dem Bauen
gelscht.
Open console when building Die Konsole wird beim Bauen geffnet.
Bring console to top when
building
Die Konsole wird in den Vordergrund
gebracht, wenn gebaut wird.
Limit console output Begrenzt die Anzahl der Zeilen, die von der
Konsole gespeichert werden
Output text color Die Farbe von gewhnlichem Text
Information message text
color
Die Farbe von informativem Text
Error message text color Die Farbe von Fehlermeldungen (z. B. wenn
ein Kommando nicht gefunden wurde)
Background color Die Hintergrundfarbe der Konsole
Background color for build
problem
Die Hintergrundfarbe fr von den Error
Parsern erkannte Probleme
Highlight color for build
problem
Die Farbe fr selektierte Probleme
Parser genutzt werden, ist projektspezisch und wird in folgendem Ab-
schnitt beschrieben.
4.7.4 Error Parser festlegen
Welche Error Parser beim bersetzen in Betracht gezogen werden, kn-
nen Sie in den Projekteinstellungen auf der Seite C/C++ Build > Settings
unter der Registerkarte Error Parsers festlegen. Dort verbirgt sich eine
Liste, die alle von CDT oder einen CDT-erweiternden Plugin angebo-
tene Error Parser enthlt. Ein Hkchen symbolisiert, ob der jeweilige
Error Parser auf die Ausgabe der Werkzeuge angewandt wird. Error
Parser werden dabei in der Reihenfolge benutzt, wie sie in der Liste
erscheinen. Ein berblick aller bei CDT mitgelieferten Error Parser be-
ndet sich in Tabelle 4-6.
Error Parser sind seit CDT 7.0 hauptschlich mit Hilfe von regu-
lren Ausdrcken deniert. Das hat auch den Vorteil, dass Sie eigene
Parser fr weitere Werkzeuge hinzufgen knnen. Das erledigen Sie auf
der Seite C/C++ > Build in den globalen Voreinstellungen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
220 4 Der Build-Prozess
Tab. 4-6
Eingebaute Error Parser
Name Beschreibung
CDT GNU Make Error
Parser 7.0
Parst die Fehlermeldungen, die make
aufgrund von Syntaxproblemen ausgibt
CDT pushd/popd CWD
Locator
Extrahiert Informationen ber das aktuelle
Arbeitsverzeichnis
CDT GNU C/C++ Error
Parser
Versteht sich ber die Fehlermeldung des C-
oder C++-Compilers gcc bzw. g++
CDT GNU Assembler
Error Parser
Parst die Fehlermeldung des GNU-Assemblers
as
CDT GNU Linker Error
Parser
Durch den GNU-Linker ld ausgegebene
Fehlermeldungen werden erkannt.
CDT Visual C Error
Parser
Ein Error Parser fr Microsoft Visual C
4.7.5 Fehler nden
Fehler und Warnungen werden gleich nach dem bersetzen im Editor
als Marker an richtiger Stelle des in Bearbeitung bendlichen Quelltex-
tes gesetzt. Die von Error Parsern gewonnenen Warn- und Fehlermel-
dungen manifestieren sich als Annotationen, die vor allem den Quell-
texteditor bereichern, aber auch imOutline-Viewwerden Dekorationen
an den Graken vorgenommen. Auf diese Weise ist die Position des Feh-
lers schnell aufgesprt. Wie in Abbildung 4-29 zu sehen ist, enthllt ein
Mouse-Hover auf dem angezeigten Fehler die Meldung.
Abb. 4-29
Ergebnis des Error
Parsers
Eine weitere Adresse, um die Warnungen oder Fehler aufzuspren, ist
der Problems-View, der alle Annotationen vom Typ Warnung oder Feh-
ler auistet. Der Viewstellt neben der Beschreibung die betreffende Res-
source, ihren Pfad und die Zeilennummer in separaten Spalten dar. Da
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.7 Compiler-Ausgaben 221
der View dem Eclipse-Framework entspringt, werden hier die Meldun-
gen aller Builder geloggt. Die Spalte Type gibt ber deren Ursprung
Auskunft. Probleme, die vom C/C++-Builder herrhren, erscheinen da-
bei in dieser Spalte als C/C++ Problem. Abbildung 4-30 zeigt den View.
Abb. 4-30
Problems-View mit
aufgeklapptem
Pulldown-Men
Ein Doppelklick auf einen Zeileneintrag lsst die zugehrige Datei ff-
nen, und wenn eine Zeileninformation verfgbar ist, wird diese ange-
sprungen. Auf diese Weise lassen sich Fehler also schnell global aufsp-
ren und der Reihe nach abarbeiten.
4.7.6 Fehler ltern
Wenn die Anzahl der Projekte gro ist, kann der Problems-View mit
Fehlermeldungen sehr berfllt sein. Es wird schwierig, die Fehler ein-
zelner Projekte zu lokalisieren. Zudem ist es mglich, dass aufgrund des
Markerlimits wichtige Fehlermeldungen herausgeltert werden.
Neben dem Markerlimit existiert jedoch noch eine leistungsfhige
Variante, Eintrge zu ltern. Diese verbirgt sich im Kongurationsfens-
ter, das durch den Pulldown-Meneintrag Congure Contents... geff-
net werden kann. Das Fenster ist in Abbildung 4-31 zu sehen.
In der linken Liste sind alle verfgbaren Filter aufgefhrt. Sie lsst Filter hinzufgen
sich mit dem Button New... oder Duplicate... unter der Angabe eines
Namens erweitern, wobei letzterer Button den aktuell selektierten Ein-
trag dupliziert. Mit dem Button Remove knnen aus der Liste Eintrge
entfernt werden.
Rechts legen Sie die Kriterien des selektierten Filters fest. Sie ltern Filterkriterien
Elemente nach einem bestimmten Bereich (Scope), ihrer Beschreibung
(Description) und ihrem Typ (Type). Interessant sind die verschiedenen
Modi, die bei Scope whlbar sind:
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
222 4 Der Build-Prozess
Abb. 4-31
Problem-View
kongurieren
On any element. Der Filter gilt global.
On any element in the same project. Es werden nur die Eintrge
betrachtet, die auf Ressourcen im Projekt des selektierten Eintrages
annotiert werden.
On selected element only. Es werden nur die Eintrge der selektier-
ten Ressource betrachtet.
On selected element and its children. Es werden nur die Elemente
der selektierten Ressourcen und der darunter liegenden Hierarchie
betrachtet.
On working set. Es werde nur die Elemente eines whlbaren
Working-Sets betrachtet.
Geben Sie z. B. bei einem Filter den Eintrag On any element in the same
project an und whlen Sie eine Ressource an, dann erscheinen im Pro-
blems-View nur die Fehler, die in den Ressourcen des umschlieenden
Projekts vorhanden sind. Standardmig erfllt diese Funktion bereits
der Filter mit Namen Error/Warnings on Project.
Aktiv ist eine Filterkonguration, wenn Sie sie in der Liste mit ei- Kongurationen
aktivieren nem Hkchen versehen und den Dialog anschlieend mit OK best-
tigen. Je nachdem, ob Sie wnschen, dass alle Kongurationen einen
Treffer landen mssen oder mindestens ein Treffer einer Kongurati-
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.8 Code-Generatoren verwenden 223
on gengt, whlen Sie zuvor entweder Match all congurations oder
Match any conguration an. Wenn Sie nur zwischen verschiedenen
Kongurationen umschalten mchten, empehlt sich die Abkrzung
im Pulldown-Men ber das Untermen des Show-Eintrags, in dem
Sie diese schnell ein- und ausschalten knnen.
4.8 Code-Generatoren verwenden
Die Aufgabe von Code-Generatoren ist es, aus einer Eingabedatei, in
der man mit Hilfe von einfachen Anweisungen ein Problem formuliert,
Quelltexte fr eine Zielsprache zu erzeugen, mit deren Hilfe Instan-
zen des Problems durch angepasste Algorithmen mglichst optimal ge-
lst werden. Oftmals benutzt man Code-Generatoren, wenn gefordert
wird, Textdateien efzient zu parsen, die einer sehr speziellen Gramma-
tik folgen. Bentigt werden efziente Parser beispielsweise fr eine fr
die Informatik uerst wichtige Klasse von Programmen, nmlich den
Compilern. Vertreter von Parser-erzeugenden Code-Generatoren (die
dann auch Parsergeneratoren genannt werden) sind yacc oder dessen
im Rahmen des GNU-Projektes unter einer Open-Source-Lizenz entwi-
ckelte bison [16].
Thema im weiteren Verlauf dieses Abschnitts soll die Einbindung
solcher Code-Generatoren sein. Mchten Sie beim Bauen Ihres Projekts
einen Code-Generator hinzufgen, so haben Sie im Wesentlichen vier
Mglichkeiten:
Ihr Projekt nutzt fr den Build-Prozess ein externes Tool, wie make.
Dann wre fr das Hinzufgen des Code-Generators eine Anpas-
sung des Makeles vonnten.
Sie machen sich auf die Suche nach einem Plugin fr den Code-
Generator.
Sie schreiben selbst ein Plugin fr den Code-Generator.
Sie benutzen das Custom-Build-Feature, das in Abschnitt 4.3.4 auf
Seite 190 beschrieben wurde.
Die erste Variante wird hier nicht nher betrachtet, da es um die Pro-
jekte geht, die von CDT gemanagt werden sollen. Die zweite oder die
dritte Variante sind sicherlich die elegantesten. Ein solches Plugin wr-
de ein neues Werkzeug fr den Code-Generator denieren, dessen Op-
tionen in GUI-Elemente verpacken, vermutlich einen Editor mit Syntax
Highlighting hinzufgen und als Bonus einen Fehlerparser bereitstellen.
Nicht immer ist ein derartiges Plugin verfgbar; viel seltener hat man
die Mue, selbst Hand anzulegen, insbesondere wenn es schnell gehen
und einfach nur funktionieren soll. Daher bietet sich die vierte Variante
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
224 4 Der Build-Prozess
an, die im Folgenden anhand eines kleinen Anwendungsbeispiels vorge-
stellt werden soll. Dabei wird auch auf mgliche Hinternisse und deren
berwindung eingegangen.
4.8.1 Beispiel: mathematische Ausdrcke auswerten
Die Testapplikation ist frei nach einem Beispiel, das der Dokumenta-
tion von bison entnommen wurde. Die Aufgabe der Applikation be-
steht darin, einen mathematischen Ausdruck in Inxnotation
3
einzule-
sen und auszuwerten und das Ergebnis auf dem Bildschirm auszugeben.
Wie Sie sich denken knnen, soll dabei bison benutzt werden, um einen
efzienten Parser fr die Eingabe zu erzeugen.
Die im Beispiel verwendete Menge von Terminalsymbolen setzt
sich neben den Fliekommazahlen aus den bekannten Symbolen fr
die Operation der Addition +, Subtraktion -, Multiplikation *,
Division / und Exponentiation ^ sowie aus den Symbolen fr die
Klammern ( und ) zusammen. Als Nichtterminalsymbol wird expr
verwendet. Die Regeln (auch Produktionsregeln genannt), nach denen
sich ein Ausdruck erzeugen lsst, lauten wie folgt:
expr NUM
| expr + expr
| expr - expr
| expr
*
expr
| expr / expr
| expr ^ expr
| ( expr )
Bei Inxnotationen spielen noch zwei weitere Eigenschaften eine Rolle,
die, wenn man die Grammatik formal deniert, bereits in den Produk-
tionsregeln bercksichtigt werden knnen und sollten:
Assoziativitt: Per Konvention sind Subtraktion und Division linksas-
soziativ, whrend die Exponentiation ein Exemplar eines rechts-
assoziativen Inxoperators darstellt. Die Reihenfolge bei Addition
und Multiplikation spielt bekanntlich keine Rolle. Hier werden sie
deshalb als linksassoziative Operationen behandelt.
Prioritt: Die Reihenfolge der Operationen wird in der Regel durch
Klammern festgelegt. Um die Lesbarkeit zu verbessern, weist man
Operatoren eine Prioritt zu. So wird die Exponentiation stets vor
3
So nennt man die allgemein gebruchliche Notationsweise eines mathema-
tischen Ausdrucks: Die Operatoren benden sich zwischen den Operanden.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.8 Code-Generatoren verwenden 225
einer Multiplikation oder Division und die Punktrechnung stets vor
Strichrechnung ausgefhrt.
Allerdings sind bei bison keinerlei spezielle Vorkehrungen vonnten,
was die Angabe einer Grammatik sichtlich vereinfacht. So lsst sich
die Assoziativitt eines Symbols als Attribut in einem Deklarationssteil
spezizieren. Des Weiteren wird die Prioritt einer Regel anhand der
Position in der Auistung abgeleitet: Je weiter unten sie erscheint, desto
hher die Prioritt.
4.8.2 Bison installieren
Da bison Teil des GNU-Projekts ist, lsst es sich mit fast allen
Linux-Distributionen ber die entsprechenden Bordmittel installieren.
Auch ber Cygwin wird es ber das Paketmanagementsystem ange-
boten. Sollten Sie MinGW verwenden, so nden Sie Informationen
ber den Bezug einer nativen Windows-Version auf http://gnuwin32.
sourceforge.net/.
4.8.3 Projekt erstellen und Quelltexte einpegen
Erstellen Sie jetzt ein neues Projekt und geben Sie ihm einen sinnvol-
len Namen, wie z. B. calc. Als Projekttyp whlen Sie Executable aus.
Das Projekt soll zwei Quelltextdateien und eine Header-Datei umfas-
sen, calc
_
bison.y, calc.c und calc.h, deren Inhalte in den folgenden
Unterabschnitten aufgelistet sind.
Datei: calc_bison.y
Die Datei calc
_
bison.y stellt die Eingabedatei fr bison dar und be-
schreibt die Grammatik, wie sie oben erlutert worden ist. Grob kann
man die Datei in folgende Teile gliedern:
Prambel: Dieser Teil wird 1:1 in den erzeugten Quelltext bernom-
men.
Deklarationsteil: Hier wird deniert, welche Token untersttzt werden
und welcher Assoziativitt diese gengen.
Grammatik: Die eigentliche Grammatik wird hier angegeben. Die Prio-
ritt der Regeln ist ber ihre Reihenfolge im Text deniert. Je weiter
unten sich eine Regel bendet, desto hher ist ihre Prioritt.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
226 4 Der Build-Prozess
Listing 4.1
calc_bison.y
/
*
Infix notation calculator.
*
/
%{
#include <math.h>
#include <stdio.h>
#include "../calc.h"
%}
/
*
Bison declarations.
*
/
%token NUM
%left - +
%left
*
/
%left NEG /
*
negation--unary minus
*
/
%right ^ /
*
exponentiation
*
/
%% /
*
The grammar follows.
*
/
input: /
*
empty
*
/
| input line
;
line: \n
| exp \n { printf ("\t%.10g\n", $1); }
;
exp: NUM { $$ = $1; }
| exp + exp { $$ = $1 + $3; }
| exp - exp { $$ = $1 - $3; }
| exp
*
exp { $$ = $1
*
$3; }
| exp / exp { $$ = $1 / $3; }
| - exp %prec NEG { $$ = -$2; }
| exp ^ exp { $$ = pow ($1, $3); }
| ( exp ) { $$ = $2; }
;
%%
Datei: calc.h
Die Header-Datei calc.h enthlt neben der Denition des Datentyps,
der fr die semantischen Werte benutzt wird, die Prototypen der Funk-
tionen yylex() und yyerror(), die vom erzeugten Parser aufgerufen wer-
den, um das nchste Token zu holen bzw. einen Fehler anzuzeigen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.8 Code-Generatoren verwenden 227
Listing 4.2
calc.h
#ifndef CALC
_
H
_
#define CALC
_
H
_
typedef double YYSTYPE;
#define YYSTYPE
_
IS
_
DECLARED
int yylex (void);
void yyerror (char const
*
);
#endif /
*
CALC
_
H
_
*
/
Datei: calc.c
Die Datei calc.c stellt neben dem Einstiegspunkt main() die Funkti-
on yylex() bereit, die den lexikalischen Scanner ausmacht, sowie die
Funktion yyerror(), die aufgerufen wird, wenn ein syntaktischer Fehler
vorliegt.
Listing 4.3
calc.c
#include <ctype.h>
#include <stdio.h>
#include "calc.h"
#include "calc
_
bison.tab.h"
/
*
Prototype for the actual parser function
*
/
int yyparse(void);
/
*
The lexical analyzer returns a double floating point
*
number on the stack and the token NUM, or the numeric code
*
of the character read if not a number. It skips all blanks
*
and tabs, and returns 0 for end-of-input.
*
/
int yylex(void)
{
int c;
do
{
c = getchar();
/
*
Skip white space.
*
/
} while (c == || c == \t || c == \r);
/
*
Process numbers.
*
/
if (c == . || isdigit(c))
{
ungetc(c, stdin);
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
228 4 Der Build-Prozess
scanf("%lf", &yylval);
return NUM;
}
/
*
Return end-of-input.
*
/
if (c == EOF)
return 0;
/
*
Return a single char.
*
/
return c;
}
/
*
Called by yyparse on error.
*
/
void yyerror (char const
*
s)
{
fprintf (stderr, "%s\n", s);
}
int main (void)
{
puts("Please enter a formula:");
fflush(stdout);
return yyparse();
}
4.8.4 Einstellungen anpassen
Schlielich kommen wir zum interessanten Part. Wie stellt man den
Builder so ein, dass bison zum Prozessieren der Schablonendatei
calc
_
bison.y verwendet wird?
ffnen Sie hierzu die Projekteigenschaften der Schablonendatei.
Gehen Sie anschlieend auf die Seite C/C++ Build > Settings zum Re-
gister Build Steps.
Aktivieren Sie den Modus des benutzerdenierbaren bersetzungs- Notwendige
Einstellungen beim
Custom Build
schritt, indem Sie die Combobox auf Apply Custom Build Step Over-
riding Other Tools stellen. Weitere Eingabedateien, von denen das Er-
gebnis abhngen knnte, gibt es nicht deshalb bleibt das Feld Additio-
nal input le name(s) leer. In Output le name(s) geben Sie calc.tab.c
gefolgt von calc.tab.h an, da dies die Namen der Dateien sind, die
von bison erzeugt werden. Anschlieend fllen Sie das Texteingabe-
feld Command mit bison -d ../calc.y, um das bei dem Build-Schritt
zu verwendende Kommando zu spezizieren. Die Option -d gibt dabei
an, dass Denitionen, die vom erzeugten Code benutzt werden, in eine
separate Datei geschrieben werden sollen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.8 Code-Generatoren verwenden 229
Abb. 4-32
bersetzungseinstellung
fr calc.y
In Description knnen Sie z. B. Invoking bison schreiben, so dass sie
beim bersetzen ber den aktuellen Fortschritt informiert werden. Am
Ende sollten die Angaben in etwa denen in Abbildung 4-32 entspre-
chen. Zum Schluss lsst ein Klick auf OK die vorgenommenen nde-
rungen bernehmen. Im Navgation-View ist die Datei calc
_
bison.y mit
einer Dekoration versehen, die darauf aufmerksam macht, dass sie be-
sonders behandelt werden soll.
Damit das Projekt wirklich fehlerfrei bersetzt werden kann, be- Den Build-Prozess bei
Fehlern nicht
unterbrechen
darf es noch weiterer Einstellungen, die in den Eigenschaften des Pro-
jekts vorgenommen werden mssen. Die erste Einstellung ndet sich im
Register Behaviour, das auf der Seite C/C++ Build platziert ist. Dort ist
es wichtig, dass die Option Stop on rst build error ausgeschaltet ist.
Die Manahme ist ntig, weil die Angabe von Dateiabhngigkeiten im
Moment bei CDT nicht vorgesehen ist.
4
Da der Erfolg der bersetzung
der Datei calc.c von der Existenz der Datei calc
_
bison.tab.h abhngt,
man diese aber nirgends angeben kann, fhrt das zwangslug zu einer
Fehlermeldung, wenn calc.c vor calc
_
bison.y bersetzt wird. Mit der
4
Es wrde allerdings funktionieren, wenn man fr die Datei calc.c einen
Custom Build Step deniert.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
230 4 Der Build-Prozess
aktivierten Option erfolgt dennoch der nchste bersetzungsschritt, der
das Erzeugen von besagter Datei calc
_
bison.tab.h zur Folge hat.
Damit die Datei calc
_
bison.tab.h beim bersetzen gefunden wer- Include-Pfade
anpassen den kann, mssen die Include-Pfade um den Pfad ergnzt werden, in
den die Datei geschrieben wird. Dies ist immer das Verzeichnis, das
der aktuellen Konguration zugeordnet ist. Gehen Sie hierzu in den
Projekteinstellungen auf die Seite C/C++ General > Paths and Symbols
und klicken Sie auf Add.... Aktivieren Sie alle Checkboxen und geben
Sie als Pfad ${ConfigName} ein, wie in Abbildung 4-33 zu sehen ist.
Die Build-Variable ConfigName enthlt den Namen der gerade aktivier-
ten Konguration. Der Zeichenkette wird automatisch der Projektname
vorangestellt.
Abb. 4-33
Das Verzeichnis der
aktuellen
Konguration als
Include-Pfad
hinzufgen
Die letzte Einstellung, die Sie vornehmen mssen, betrifft die Kon- Linker-Einstellungen
guration des Linkers. Da das Programm die pow()-Funktion benutzt,
muss in der Regel zumindest wenn Sie unter Linux bersetzen die
Bibliothek libm eingebunden werden. Hierfr wechseln Sie in den Tool
Settings auf die Seite Libraries. Dort klicken Sie auf das Pluszeichen
und geben im neu erschienenen Dialog schlicht m ein.
4.8.5 Projekt bersetzen und ausfhren
Nachdem Sie den Builder konguriert haben, knnen Sie das Projekt
bersetzen, indem Sie den Button Build anklicken. Dabei landet die
von bison erzeugte Datei im Verzeichnis der eingestellten Konguration
und wird auch ordnungsgem vom Builder bersetzt. Wie weiter oben
erwhnt, mssen Sie das Projekt gegebenenfalls zweimal bersetzen, da
die Datei calc
_
bison.tab.h beim ersten Durchgang erzeugt wird. Das
ist etwas unschn. CDT lsst derzeit leider die Mglichkeit vermissen,
Abhngigkeiten fr Ressourcen, die von einem Werkzeug der Toolchain
bersetzt werden, selbst zu denieren.
Unschn ist fr Cygwin-Benutzer auch, dass CDT zumin- Probleme bei Cygwin
dest in der Version 7.0.0, Windows-Pfade in den erzeugten Ma-
keles benutzt, die allerdings von make nicht richtig interpre-
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.9 Cross-Compiling 231
tiert werden knnen. Das fhrt dann zu Fehlermeldungen wie
***
multiple target patterns. Stop. Wenn Sie nicht auf MinGW um-
sattlen mchten, hilft es, die Dateien, die diesen Fehler beherbergen,
vor dem bersetzen zu lschen, wobei hierbei von Eleganz keine Rede
mehr sein kann. Eine bessere Alternative wre es dann, im Builder ty-
pe den Builder Settings auf Internal Builder einzustellen, so dass make
nicht mehr genutzt wird.
4.9 Cross-Compiling
Unter Cross-Compiling versteht man das bersetzen eines Projekts fr
eine Zielplattform, die nicht kompatibel zu der ist, auf der der Vorgang
ausgefhrt wird. Das Prinzip spielt in der Welt der eingebetteten Syste-
me eine groe Rolle, fr die es in der Regel keinen Sinn ergibt, direkt
einen Compiler darauf auszufhren. In den meisten Fllen ist dies nicht
einmal mglich, denn die Ressourcen eines solchen Systems werden ent-
sprechend der angedachten Aufgabe sehr knapp bemessen.
Dieser Abschnitt zeigt, wie Sie mit Eclipse von der Form des Cross-
Compilings Gebrauch machen knnen.
4.9.1 Cross-Compiling fr Make-Projekte
Da die Logik des Cross-Compilings bereits Teil des Makeles ist, ist
ein durch CDT getriggertes bersetzen auf jeden Fall mglich. Fea-
tures wie das automatische Eintragen von Include-Pfaden funktio-
nieren allerdings nur dann, wenn es sich beim Compiler um einen
der GNU Compiler Collection handelt. Gewhnlich wird den Kom-
mandos der GNU Compiler Collection ein Prx vorangestellt, wenn
diese als Cross-Compiler funktionieren. Beispielsweise lautet der Na-
me des Compilers, der Programme fr eine ARM-Version von Linux
erzeugt, arm-linux-gcc, whrend der Cross-Compiler fr AmigaOS4-
Programme mit ppc-amigaos-gcc bezeichnet ist. Sie mssen folglich die
Einstellungen auf der Seite C/C++ Build > Discovery Options anpassen.
Probleme knnten des Weiteren zutage treten, wenn fr den im Ma-
kele aufgerufenen Compiler kein Error Parser existiert: Fehlermeldun-
gen ohne zugeschnittenen Parser knnen von CDT nicht verarbeitet
werden. Allerdings ist es mit Hilfe von regulren Ausdrcken mglich,
eigene Error Parser zu denieren.
4.9.2 Cross-Compiling fr Managed Build
Bei einem von CDT verwalteten Programm sieht die Sache nicht anders
aus. Wenngleich mit es ein wenig mehr Kongurationsaufwand erfor-
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
232 4 Der Build-Prozess
dert, ist es ohne Probleme mglich einen Cross-Compiler einzusetzen,
falls es sich dabei um einen Compiler der GNU Compiler Collection
handelt. Andere Compiler besitzen meistens andere Schnittstellen, so
dass man ein externes Plugin bentigt. In dem Fall ist also ein Triggern
des bersetzungsvorgangs schwierig.
Angenommen, bei dem Compiler handelt es sich um GCC. In die-
sem Fall bedarf es neben einer Anpassung der Einstellungen fr den
Discovery-Scanner lediglich einer nderung bei den aufgerufenen Kom-
mandos im Register Tool Settings auf der Seite C/C++ Builder der Pro-
jekteinstellungen.
4.9.3 Beispiel: AmigaOS4
Die ersten ernsthaften Schritte in Sachen Programmierung habe ich auf
meinem Amiga 2000 machen knnen. Schon damals faszinierte mich
die Transparenz des Betriebssystems, und diese Faszination ist bis heu-
te ungebrochen. So entwickle ich immer noch mit besonderer Freude in
meiner Freizeit fr dieses Betriebssystem. Leider existiert keine so sch-
ne Umgebung wie das Gespann Eclipse und CDT direkt auf demAmiga.
Mit einem knappen Beispiel mchte ich deshalb die Cross-Compiling-
Fhigkeit von Eclipse und CDT demonstrieren. Wenn Sie eine andere
Zielplattform im Sinn haben, dann knnen Sie einfach die Kommandos
und den Quelltext anpassen.
Voraussetzung schaffen
Sie sollten das System so eingerichtet haben, dass Sie mit dem Cross-
Compiler ppc-amigaos-gcc Programme fr das Amiga-Betriebssystem
bersetzen knnen. Die Eingabe von
ppc-amigaos-gcc
sollte in etwa mit
ppc-amigaos-gcc: no input files
beantwortet werden.
Projekt erstellen
Erstellen Sie ein neues, von CDT verwaltetes leeres C-Projekt mit dem
Namen hello
_
world
_
amiga. Zunchst muss das System Bescheid wis-
sen, dass anstelle vom Programm gcc das Programm ppc-amigaos-gcc
zur bersetzung der Quelltextdateien herangezogen werden soll. Hier-
zu gehen Sie bei den Projekteigenschaften auf die Seite C/C++ Build >
Settings auf die Registerkarte Tool Settings. Im Eintrag fr C-Compiler
tragen Sie den Namen des Cross-Compilers ein, also ppc-amigaos-gcc.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.9 Cross-Compiling 233
Analog gehen Sie beim Eintrag fr den Linker vor. Ebenso sollten Sie
auf der Seite C/C++ Build > Discovery Options unter Compiler invo-
cation command den Namen des Cross-Compilers einsetzen. Anschlie-
end knnen Sie die Einstellungen mit OK besttigen.
Wenn Sie jetzt in einem Navigations-View den Include-Ordner auf-
klappen, werden Sie feststellen, dass hier zunchst die Include-Pfade Ih-
res Host-Compilers zu nden sind. Diese stren allerdings sehr nicht
nur, weil sie Konikte mit den tatschlichen Include-Dateien herbeifh-
ren. Um sie zu entfernen, hilt Ihnen der Tipp auf Seite 197 weiter.
Da das Amiga-Betriebssystemseit der Version 4 Elf als Binrformat Binrparser aktivieren
nutzt, sollten Sie als letzte Voreinstellung den Elf Parser fr das Projekt
aktivieren. Sie erledigen das in den Projekteinstellungen auf der Seite
C/C++ Build > Settings im Register Binary Parser.
Quelltext
Fgen Sie jetzt dem neuen Projekt folgende Quelltextdatei mit Namen
window.c hinzu:
Listing 4.4
window.c
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/graphics.h>
int main(int argc, char
*
argv[})
{
struct Window
*
wnd;
wnd = IIntuition->OpenWindowTags( NULL,
WA
_
Title, "Hello World",
WA
_
CloseGadget, TRUE,
WA
_
DragBar, TRUE,
WA
_
IDCMP, IDCMP
_
CLOSEWINDOW,
WA
_
Left, 0,
WA
_
Top, 20,
WA
_
InnerWidth, 200
WA
_
InnerHeight, 100,
TAG
_
DONE);
if (!wnd) goto bailout;
IExec->WaitPort(wnd->UserPort);
IIntuition->CloseWindow(wnd);
bailout:
return 0;
}
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
234 4 Der Build-Prozess
Projekt bauen
Damit ist eigentlich schon alles fertig. Das Projekt bauen Sie, indem
Sie den Eintrag Project > Build Project anklicken. Sie nden das fertige
Programm anschlieend im Ordner Binaries vor. Um es auszufhren,
mssen Sie es nur noch zum entfernten Rechner bertragen. Hierfr
knnen Sie die Export-Funktion nutzen.
4.9.4 Cross-Compiling-Plugin
Wie im vorangegangen Abschnitt gezeigt, sind die Einstellungen, die
man durchfhren muss, um einen auf GCC basierenden, bereits instal-
lierten Cross-Compiler einzubinden, recht berschaubar. Trotzdem ha-
ben die CDT-Entwickler das Plugin C/C++ GCC Cross Compiler Sup-
port eingefhrt, das ber die Update-Site von CDT bezogen werden
kann.
Einmal installiert, fgt es im New Project-Wizard den Projekttyp
Cross-Compile Project und die Toolchain Cross GCC hinzu. Die Neu-
igkeit besteht darin, dass man beim Erstellen oder in den Eigenschaften
des Projekts (C/C++ Build > Settings > Tool Settings), den Prx und
das Verzeichnis der Compiler angeben kann (ohne /bin). Das ist prinzi-
piell ein guter Gedanke. Auf diese Weise muss zum einen der Komman-
dosuchpfad nicht gendert werden. Zum anderen entfllt die Notwen-
digkeit, das Prx in vielen Einstellungen manuell eingeben zu mssen,
so wie es im letzten Abschnitt beschrieben wurde. Leider fehlt beim
Plugin von CDT 7.0 jedoch die Einstellungen fr einen Linker, was ei-
ner sinnvollen Anwendung im Wege steht.
4.10 Remote Compiling
Manchmal knnte es interessant sein, die Quelltexte auf einem loka-
len Rechner zu bearbeiten und zu verwalten, das bersetzen jedoch auf
einen anderen Rechner auszulagern, weil dieser der leistungsfhigere
ist. Beispielsweise bentigt ein groes Projekt wie das Open-Source-
Vektorzeichenprogramm Inkscape fr einen vollstndigen Compiler-
Durchlauf auf einem Rechner mit nur einem Kern ca. 17 min Zeit,
whrend auf einen aktuellen Dualkernsystem das Ganze immerhin in
knapp zehn Minuten abgeschlossen ist. Im Folgenden wird Schritt fr
Schritt ein Setup beschrieben, mit dessen Hilfe Sie Remote Compiling
durchfhren knnen.
Eine Voraussetzung hierfr ist, dass der Pfad des Projekts auf Pfade auf lokalen und
entfernten Rechner
mssen dieselben sein.
beiden Rechnern der gleiche ist, da CDT trotz EFS, der abstrakten
Dateisystem-API von Eclipse, mit verschiedenen Pfaden nicht umgehen
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.10 Remote Compiling 235
kann. Vor allem die Error Parser auf der lokalen Seite setzen gleiche
Pfade voraus, um aus den Fehlermeldungen die richtigen Marker fr
die korrekte Datei zu setzen. Damit das Setup dieser Bedingung ge-
recht wird, bentigen Sie also ein Dateisystem, das sowohl auf dem
Remote-Rechner als auch auf Ihrem lokalen Rechner an gleicher Stelle
eingehngt ist. Wenn z. B. der Pfad, in dem sich das Projekt auf Ihrem
lokalen Rechner bendet, /home/<username>/remote/ lautet, dann muss
sich dieser Pfad auch beim entfernten Rechner auf dasselbe physische
Verzeichnis beziehen.
Das vorgestellte System funktioniert, wenn auf beiden Rechnern
das Linux-Betriebssystem luft. Zuerst wird die Voraussetzung geschaf-
fen, sich auf dem entfernten Rechner einzuloggen, um Kommandos ab-
zusetzen. Dann wird ein verteiltes Dateisystem eingerichtet. Anschlie-
end erstellen Sie ein Build-Kommando, das die eigentliche Arbeit zum
entfernten Rechner delegiert. Schlielich werden Sie die Eigenschaften
eines Projekts so modizieren, dass jeder bersetzungsaufruf vom ent-
fernten Rechner prozessiert wird. Voraussetzung dabei ist, dass es sich
um ein von CDT verwaltetes Projekt handelt.
4.10.1 Das Programm ssh einrichten
Eine Voraussetzung fr die Funktion ist, dass Sie Kommandos von Ih-
rem lokalen Rechner auf dem entfernten Rechner zur Ausfhrung ab-
setzen knnen, was in den meisten Fllen ber ssh geschieht. Mit ssh,
was die Kurzform zu Secure Shell ist, stellen Sie eine verschlsselte Ver-
bindung zum entfernten Rechner her. Zwar ist diese Sicherheit nicht
unbedingt vonnten, wenn sich beide Rechner in einem abgeschotteten
lokalen Netzwerk benden, da ssh aber standardmig bei fast jeder
Linux-Distribution in der Form von OpenSSH eingerichtet ist, hat es
wenig Sinn, noch ein anderes System zu installieren.
Beim Einloggen auf den entfernten Rechner fragt ssh per Vorga- Sich beim entfernten
Rechner anmelden be nach Ihrem Passwort. Es wre sehr lstig, dies jedes Mal bei einem
bersetzungsvorgang eingeben zu mssen. Glcklicherweise sahen das
auch die OpenSSH-Entwickler so und haben noch ein anderes Authen-
tizierungsverfahren als die interaktive Passwortabfrage implementiert.
Dieses Verfahren basiert auf einem Schlsselpaar, das aus einempri- Privater und
ffentlicher Schlssel vaten und einem nur dazu passenden ffentlichen Schlssel besteht. In
der Kryptographie dient der ffentliche Schlssel zum Chiffrieren von
Nachrichten, die nur unter der Verwendung des privaten Schlssels ef-
zient dechiffriert werden knnen (so hofft man zumindest). Auf diese
Weise lsst sich das System auch zur Authentizierung benutzen. Dem
entfernten Rechner ist hierzu der ffentliche Schlssel des Benutzers be-
kannt zu machen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
236 4 Der Build-Prozess
Es sei noch angemerkt, dass die auf Schlssel basierende Authenti-
zierung im Vergleich zur Passwortauthentizierung gegen Brute-Force-
Attacken
5
wesentlich sicherer ist, weil ein privater Schlssel wesentlich
lnger als ein Passwort ist.
Wenn Sie noch kein Schlsselpaar erzeugt haben, dann knnen Sie Schlsselpaar erzeugen
dies auch direkt in Eclipse tun. Ebenso knnen Sie gleich den ffent-
lichen Schlssel zum entfernten Rechner kopieren. In Abschnitt 2.5.6
wurde beschrieben, wie Sie dabei vorzugehen haben. Dabei mssen Sie
darauf Acht geben, dass auch der lokale SSH-Client ssh Zugriff auf den
privaten Schlssel haben muss. Der in Eclipse eingebaute SSH-Client
kann hier nmlich nicht verwendet werden, da das Build-System nur
Programme untersttzt, die ber die Kommandozeile aufgerufen wer-
den. In der Regel gengt es hierfr, den privaten Schlssel je nach Al-
gorithmus in der Datei .ssh/id
_
rsa beziehungsweise .ssh/id
_
dsa abzu-
legen.
4.10.2 Das Dateisystem einrichten
Da die Funktion von ssh nun sichergestellt wurde, ist es relativ un- Dateisystem sshfs
problematisch, auch ein Dateisystem anzumelden, das sich ssh oder
besser sftp bedient. Ein solcher Vertreter ist sshfs, das auf FUSE auf-
setzt, einem Framework unter Linux, das Dateisysteme im Userspace
ermglicht. Da die meisten Distributionen das Dateisystem nicht stan-
dardmig installieren, liegt die Installation bei Ihnen. Debian- oder
Ubuntu-Benutzer knnen dies mit
aptitude install sshfs
durchfhren. Beachten Sie, dass das erwhnte Kernel-Modul FUSE
ebenfalls installiert ist (geschieht in der Regel bei Debian oder Ubun-
tu automatisch).
Anschlieend hngen Sie durch Eingabe von Das entfernte
Verzeichnis einhngen
sshfs ssh-konto@ssh-server:[pfad] mount-point
unter dem lokalen Verzeichnis mount-point das entfernte Verzeichnis
pfad ein. Achten Sie dabei darauf, dass mount-point mit dem Pfad auf
dem entfernten Rechner bereinstimmt, sonst funktioniert das Vorha-
ben nicht einwandfrei. Sollte das Anmelden fehlschlagen, so haben Sie
vermutlich nicht die entsprechenden Rechte. Beispielsweise muss der
aktuelle Benutzer unter Debian der fuse-Gruppe angehren. Im bri-
gen machen Sie das Anmelden rckgngig mit
fusermount -u mount-point
5
Hierbei versucht der Angreifer in das System einzudringen, indem er alle
mglichen Buchstabenkombinationen ausprobiert.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.10 Remote Compiling 237
Neben dem vorgestellten sshfs knnen Sie natrlich auch ein anderes Verteilte Dateisysteme
verteiltes Filesystem verwenden. Mit NFS oder PVFS2 sind hier nur
zwei Vertreter genannt. Zwar erfordert das zustzliche Modikatio-
nen auf dem entfernten Rechner, hat aber den Vorteil, dass ein solches
Dateisystem fr diesen Zweck geschaffen worden ist und so in der Re-
gel performanter arbeitet.
Weiterhin wird in Kapitel 8 ein Eclipse-Plugin vorgestellt, mit des-
sen Hilfe ein Remote-Verzeichnis in den Workspace von Eclipse einge-
hngt werden kann.
4.10.3 Ein Remote-Build-Kommando erstellen
Nachdem das Dateisystem eingerichtet wurde, ist es an der Zeit, das
Build-Kommando zu entwerfen. Die Aufgabe von einem solchen Kom-
mando soll darin bestehen, sich mit dem entfernten Rechner zu verbin-
den und dort das Programm make mit allen Argumenten zu starten, die
ihm selbst bergeben wurden. Des Weiteren soll das Kommando zwei
weitere, vorangestellte Argumente untersttzen, damit es universell ein-
gesetzt werden kann:
Das erste Argument soll die Login-Daten des entfernten Rechners
aufnehmen, d. h., den Benutzernamen und die Adresse.
Mit dem zweiten Argument gibt man das entfernte Verzeichnis an,
in dem das Kommando make gestartet wird.
Selbstverstndlich ist fr eine solche Aufgabe ein Shell-Skript prdesti-
niert. Das folgende kleine Skript erfllt die geschilderten Anforderun-
gen:
Listing 4.5
make.remote
#!/bin/bash
if [ "$#" -lt "2" ]; then
echo -n "Usage: make.remote [address] "
echo "[location] [args for make...]"
exit 1
fi
REMOTE
_
ADDR=$1
REMOTE
_
DIR=$2
shift 2
REMOTE
_
CMD="cd ${REMOTE
_
DIR} && make $
*
"
ssh $REMOTE
_
ADDR $REMOTE
_
CMD
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
238 4 Der Build-Prozess
Nennen Sie das Skript make.remote und legen Sie es am besten im Ver-
zeichnis Ihres Projekts ab. Stellen Sie sicher, dass die Datei des Skriptes
ausfhrbar ist. Gegebenenfalls setzen Sie das entsprechende Dateiattri-
but z. B. mit der Eingabe von
chmod a+x make.remote
in einer Shell oder ber die Eigenschaften der Datei auf der Seite Re-
source direkt in Eclipse.
Damit spter alles reibungslos funktioniert, ist es ratsam, vorher Das neuen
Build-Kommando
testen
alles einmal ohne Eclipse und CDT zu testen. Geben Sie hierzu in einer
Shell
./make.remote [remote] [location] all
ein, wobei Sie fr remote den Benutzernamen mit der Adresse des ent-
fernten Rechners und mit location das Verzeichnis ersetzen, in dem das
Make-Kommando ausgefhrt werden soll.
4.10.4 Remote Compiling in Eclipse anwenden
Der letzte Schritt im Programm besteht darin, CDT und das Projekt
ber das modizierte Build-Kommando zu informieren. Rufen Sie hier-
fr das Fenster fr die Project Properties auf. Gehen Sie dann auf die
Seite C/C++ Build. Dort stellen Sie den Builder type auf External buil-
der, falls noch nicht geschehen. Das Hkchen vor Use default command
entfernen Sie, um bei Build command ohne Zeilenumbruch
${ProjDirPath}/make.remote
${remote
_
user}@${remote
_
addr}
${ProjDirPath}/${ConfigName}
einzugeben. Dabei identiziert die Build-Variable ProjDirPath das Pro-
jektverzeichnis und CongName den Namen der aktiven Kongurati-
on. Die beiden anderen Variablen remote_user und remote_addr repr-
sentieren den Login-Namen bzw. die Adresse des entfernten Rechners.
Die beiden Variablen knnen Sie natrlich direkt selbst im Build com-
mand explizit ausschreiben oder als Build-Variable entweder projekt-
spezisch oder global denieren, was natrlich die exiblere Variante
darstellt.
Wenn Sie jetzt einen bersetzungsvorgang starten, dann wird zu- bersetzen
nchst das neue Skript anstelle von make aufgerufen. Das Skript startet
make auf dem entfernten Rechner, dessen Ausgabe an Eclipse weiter-
geleitet wird. Da die Pfade auf beiden Rechnern identisch sind, funk-
tioniert auch die Fehleranzeige sehr gut. Ebenso sind nderungen auf
einem Rechner sofort auf dem anderen sichtbar, da es sich physisch um
dasselbe Verzeichnis handelt.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.11 Microsoft Visual C++ einbinden 239
4.11 Microsoft Visual C++ einbinden
Fr Windows-Entwickler, die vor der Entscheidung stehen, ob sie nach
CDT migrieren sollen, ist sicherlich die Frage von groem Interesse,
ob sie auch Ihre bestehenden Projekte weiter pegen knnen. Wird oh-
nehin schon ein GCC-Compiler verwendet, so knnen Sie das Projekt
importieren, wie es in Abschnitt 3.2.4 beschrieben wurde. Anders ist
es natrlich, wenn Sie zuvor Visual C++ benutzt haben und Sie aus ir-
gendeinem Grund nicht auf GCC umsteigen knnen. Dieser Abschnitt
zeigt deshalb auf, wie Sie ein vorhandenes Projekt aus Visual C++ mit
Eclipse und CDT bersetzen.
Visual C++ Keybindings
Eingeeischte Fans der Entwicklungsumgebung von Microsoft wird es
vielleicht freuen, dass sie keine neuen Tastatur-Shortcuts lernen mssen,
denn Eclipse lsst sich hierfr leicht kongurieren. Dazu gehen Sie in die
Voreinstellungen auf die Seite General > Keys. In Scheme whlen Sie
Microsoft Visual Studio aus.
Damit das Ganze nicht so theoretisch daherkommt, wird das Vorgehen JkDefrag
anhand eines Beispiels erlutert. Hierfr verwenden wir das Projekt Jk-
Defrag [10]. Wie man vom Namen her vermuten kann, widmet sich
JkDefrag der Defragmentierung und zwar von externen Speicherme-
dien wie Festplatten. Es ist ausschlielich fr Windows verfgbar, da
es auf die Windows-eigene Defragmentier-API aufsetzt. Im Vergleich
zum Programm Defrag.exe, das Windows fr gewhnlich beiliegt, be-
nutzt es andere Algorithmen fr die Auswahl der Blcke, die inner-
halb des Mediums vertauscht werden. Zwar hat JkDefrag eine zunchst
eher schlicht anmutende Benutzeroberche, allerdings knnen Sie das
konkrete Verhalten je nach Bedarf durch vielfltige Optionen ber die
Kommandozeile beeinussen.
JkDefrag an dieser Stelle als Beispiel zu verwenden, hat mindestens
zwei Grnde: Zum einen ist es unter GPL verffentlicht. Die Quelltexte
sind also frei verfgbar. Zum anderen wird es eben von seinem Autor
mit Hilfe von Visual C++ entwickelt; eine Transition zu GCC wre alles
andere als trivial.
Anzumerken ist noch, dass die Beschreibung hier auf der Version
3.36 von JkDefrag basiert, die am 31. August 2008 der ffentlichkeit
zugnglich gemacht wurde. Inzwischen stellte man die Entwicklung von
JkDefrag ein, wobei mit MyDefrag ein verbessertes Porgramm vom sel-
ben Autor erschaffen worden ist. Da die Quellen allerdings nicht ver-
fgbar sind, basiert der Abschnitt nachwievor auf JkDefrag.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
240 4 Der Build-Prozess
Gehren Sie zu dem Leserkreis, der bisher noch nichts mit Visu-
al C++ zu tun hatte? Und mchten Sie diesen Abschnitt trotzdem bear-
beiten? Falls Sie beide Fragen mit Ja beantwortet haben, dann knnen
Sie ohne Sorge weiterlesen, denn im ersten Unterabschnitt wird erlu-
tert, woher Sie eine kostenlose Version von Visual C++ beziehen und
wie Sie diese installieren. Ist bei Ihnen Visual C++ bereits installiert,
so knnen Sie den Teil freilich berspringen und sich gleich dem inter-
essanten, CDT-spezischen Teil zuwenden.
4.11.1 Visual C++ installieren
Seit dem 2005er-Releasezyklus seiner Visual Studio-Reihe, die unter an-
derem Visual C++ einschliet, bietet Microsoft spezielle Versionen, die
zwar hinsichtlich Komfort und Funktionalitt abgespeckt sind, dafr
aber von jedermann frei ber das Internet bezogen werden knnen.
Glcklicherweise ist der eigentliche Kern des Entwicklerwerkzeugs,
d. h. der Compiler, vollstndig vorhanden, so dass die Einschrnkungen
fr uns nicht weiter von Belang sind: Die Komfortfunktionen werden
schlielich von CDT bereitgestellt.
Sie knnen die Express-Edition von Visual C++ ber die Webseite
http://www.microsoft.com/express/download/
beziehen. Zur Auswahl stehen dort eine Web- sowie eine Ofine-In-
stallation. Bei ersterer Variante wird das Gros der Daten whrend des
Installationsvorgangs angefordert, und zwar nur jener Teil, der wirk-
lich bentigt wird. Hingegen mssen Sie bei der Ofine-Installation zu-
nchst eine mehrere Gigabyte umfassende ISO-Datei
6
aus dem Internet
laden, die Sie anschlieend ber einen CD/DVD-Emulator einbinden
oder auf DVD brennen. Eine weitere Alternative stellen diverse Com-
puterfachmagazine dar, denen gelegentlich aktuelle Versionen von Vi-
sual Studio beigelegt sind.
Fr die hier dargestellten Ablufe gengt die minimale Installation
von Visual C++ vollkommens, insofern empfehle ich Ihnen die Web-
Installation. Diese spart nicht nur Platz, sondern geht auch am schnells-
ten vonstatten. Wenn Sie sich dem anschlieen mchten, dann whlen
Sie auf der genannten Website den Eintrag Visual C++ 2010 Express
und Ihre bevorzugte Sprache aus, bevor das Herunterladen einer Datei
vc_web.exe beginnt. Nach erfolgtem Download fhren Sie das Setup-
Programm mit Administratorrechten aus.
Begrt werden Sie daraufhin mit einem Installationswizard, des-
sen erste Seite in Abbildung 4-34 zu sehen ist. Hier geben Sie an, ob Sie
6
Diese schliet alle als Express-Edition vorliegenden Produkte der Visual
Studio-Reihe ein.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.11 Microsoft Visual C++ einbinden 241
Abb. 4-34
Auch der
Installationswizard von
Visual C++ mchte Sie
willkommen heien.
Informationen ber Ihre Erfahrungen mit der Installation an Microsoft
senden mchten. Auf der zweiten Seite werden Ihnen Lizenzbedingun-
gen angezeigt, die Sie akzeptieren mssen, wenn mit der Installation
fortgefahren werden soll. Auf der nchsten Seite werden Sie gefragt,
welche zustzlichen Komponenten Sie installieren mchten. Hier kn-
nen Sie wieder alle Optionen deaktivieren, da die Zusatzkomponenten
fr die C++-Entwicklung wenig interessant sind.
Auf der folgenden Seite fordert man Sie auf, den Installationspfad
anzugeben. Dabei enthlt die Seite auch Informationen ber die tat-
schlich zu installierenden Komponenten und den hierfr veranschlag-
ten Speicherbedarf auf der Festplatte. Falls Sie das .NET-Framework
noch nicht installiert haben, kann der beanspruchte Platz durchaus die
Gigabyte-Grenze berschreiten. Nach Auswahl des Pfades klicken Sie
anschlieend auf Installieren >, um die Installation tatschlich in Gang
zu setzen. Daraufhin ldt der Wizard die erforderlichen Daten herun-
ter und installiert Sie auf Ihrem Rechner. Selbstverstndlich gibt er bei
Erfolg oder Fehler eine entsprechende Fehlermeldung aus.
4.11.2 Das Projekt einrichten
Besorgen Sie sich das Quellarchiv von JkDefrag, an das Sie unter http:
//www.kessels.com/JkDefrag kommen. Erstellen Sie danach mit Hilfe des
New-Projekt-Wizards ein neues C++-Projekt, das Sie z. B. jkdefrag nen-
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
242 4 Der Build-Prozess
nen. Auf der Seite, auf der Sie nach den Projekttypen gefragt werden,
whlen Sie Makele project > Empty Project aus. Von CDT verwaltete
Projekte knnten dann gewhlt werden, sobald eine an Visual C++ an-
gepasste Toolchain existiert, was zum Zeitpunkt der Drucklegung des
Buchs allerdings nicht der Fall ist.
Ist das Projekt erfolgreich angelegt, importieren Sie anschlieend
den Inhalt der heruntergeladenen Archivdatei, genau so wie es in Ab-
schnitt 3.2.4 ab Seite 91 erlutert wurde. Ein vorheriges Entpacken des
Archivs in ein temporres Verzeichnis knnen Sie sich sparen, wenn Sie
als Importquelle General > Archive File whlen. Ist der Vorgang been-
det, so msste sich die Struktur der Ressourcen Ihres Projekts mit der
in Abbildung 4-35 dargestellten Hierarchie in etwa decken.
Abb. 4-35
Das Projekt jkdefrag
nach dem Importieren
Bevor Sie im Folgenden fr eine erfolgreiche bersetzung des Projekts
den Build-Prozess anpassen, sollten Sie sicherstellen, dass korrekte Bi-
nary und Error Parser aktiviert sind. Die notwendigen Einstellungen
nehmen Sie in den Projekteigenschaften auf der Seite C/C++ Build >
Settings vor. Dort sollten Sie zumindest bei PE Windows Parser und
Visual C Error Parser in den Registern Binary Parsers bzw. Error Par-
sers ein Hkchen anbringen.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.11 Microsoft Visual C++ einbinden 243
4.11.3 Den Build-Prozess anpassen
Die Quelltext-Distribution von JkDefrag beinhaltet eine vorgefertig-
te Makele-Datei, die problemlos von nmake.exe abgearbeitet wer-
den kann. Durch geringfgige nderungen knnen Sie jedoch auch die
GNU-Version von make von der Syntaxkonformitt der Datei berzeu-
gen und zum Zwecke der Programmgenerierung benutzen. Zunchst
soll das Projekt jedoch unter der Verwendung von nmake.exe bersetzt
werden, whrend im darauffolgenden Unterabschnitt der Vorgang an
make angepasst wird.
JKDefrag mit nmake bersetzen
Sofern Sie diese Parameter nicht in den globalen Voreinstellungen
verndert haben (siehe Abschnitt 4.4.1), wird fr alle neu erstellten
Makele-basierten Projekte das Kommando make aufgerufen, sobald
der bersetzungsvorgang ausgefhrt werden soll. Wie erwhnt, wird
die Steuerung jetzt von nmake bernommen. Rufen Sie hierfr die Pro-
jekteinstellungen zu jkdefrag auf. Gehen Sie dort auf die Seite C/C++
Build. Im Karteireiter Builder Settings vergewissern Sie sich zunchst,
dass bei Builder type tatschlich der Eintrag External builder ausge-
whlt ist, bevor Sie die Auswahlbox Use default build command deak-
tivieren. Geben Sie dann in Build command nmake ein und besttigen
Sie die vorgenommenen nderungen mit OK.
Sie knnen es jetzt wagen, den Build-Prozess zu starten. Ein Klick
auf Build lsst den Vorgang beginnen. Je nachdem, wie Ihre Installa-
tion eingerichtet ist, ist dies von Erfolg gekrnt oder schlgt fehl.
Kommandos knnen nicht gestartet werden. Zum Beispiel knnte
es sein, dass die folgende Meldung im Console-View erscheint:
(Cannot run program "nmake": Launching failed)
In diesem Fall kann CDT nmake nicht lokalisieren. Die einfachste Mg-
lichkeit, das Problem zu beheben, besteht darin, das Verzeichnis, in dem
sich die Microsoft-Programme benden, im Kommandosuchpfad von
Eclipse hinzuzufgen. Dieser sollte auch auf alle innerhalb von Eclipse
gestarteten Programme vererbt werden. Sie knnten den Pfad in den
Environment-Optionen des Projekts hinzufgen, wie in Abschnitt 4.4.4
beschrieben, doch ist ein solcher Pfad in der Regel nicht projektspezi-
sch. Vielmehr ist er spezisch fr Ihren Rechner oder Ihre Installation.
Deshalb ist fr diesen Zweck ganz klar eine Einstellung sinnvoller, die
global Gltigkeit hat.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
244 4 Der Build-Prozess
Wenn Sie den globalen Pfad des Betriebssystems nicht ndern wol- Den Kommando-
suchpfad von Eclipse
erweitern
len oder knnen, sind die Voreinstellungen von Eclipse die richtige
Adresse. ffnen Sie diese, indem Sie in der Menzeile den Eintrag Win-
dow > Preferences... auswhlen. Die gesuchten Einstellungen verbergen
sich dann auf der Seite C/C++ > Build > Environment. Sie lassen sich ge-
nau wie die projektspezischen Einstellungen der Umgebungsvariablen
bedienen. Klicken Sie auf Add... und geben Sie bei Name den Namen
der Variablen ein, die Suchpfade fr ausfhrbare Programme enthlt.
Unter Windows enthlt diese Angaben die Variable PATH. In Value spe-
zizieren Sie den Pfad, ber den die Visual C++-Programme zu nden
sind. Zu beachten ist jedoch, dass die Tools von Microsoft auf meh-
rere dynamische Bibliotheken zugreifen, die kreuz und quer im System
verstreut sind. Die Variable wird deshalb am besten auch um die Pfa-
de der Verzeichnisse ergnzt, die diese Bibliotheken enthalten. Auf dem
System des Autors lauten die Pfade fr Visual C++ 2010 Express:
C:\Programme\Microsoft Visual Studio 10.0\VC\bin
C:\Programme\Microsoft Visual Studio 10.0\Common7\IDE
C:\Programme\Microsoft SDKs\Windows\v7.0A\bin
Im Value-Feld werden sie getrennt durch ein Semikolon ; angegeben.
Wenn Sie vorher sichergehen mchten, dass die Pfade korrekt und voll-
stndig sind, knnen Sie eine Windows-Shell ffnen und dort beispiels-
weise
set PATH=%PATH%;<Alle Pfade getrennt durch ";">
cl.exe
eingeben. Sehen Sie anschlieend keinen Hinweis auf einen Fehler, so
wurde das Programm cl, das im brigen den eigentlichen Compiler von
Visual C++ darstellt, ordnungsgem ausgefhrt.
Versuchen Sie jetzt erneut, das Projekt zu bersetzen. Klicken Sie
dazu wieder auf Build .
Header-Dateien und Bibliotheken werden nicht gefunden. ImCon-
sole-View knnte jetzt folgende Fehlermeldung erscheinen:
cl.exe /Gd /c /W3 /nologo /D "NDEBUG" /MT /O2 /GA /GL JkDefrag.cpp
JkDefrag.cpp
JkDefrag.cpp(30) : fatal error C1034: windows.h:
Kein Suchpfad fr Headerdateien vorhanden
NMAKE : fatal error U1077:
""C:\Programme\Microsoft Visual Studio 9.0\VC\bin\cl.exe"":
Rckgabe-Code "0x2"
Stop.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.11 Microsoft Visual C++ einbinden 245
Es ist leicht zu erkennen, dass der Compiler die Datei windows.h nicht
einlesen konnte. Schn ist, dass die Datei JkDefrag.cpp, in der das Pro-
blem auftrat, mit einem Fehlersymbol in den Navigations-Views verse-
hen wurde. Hierfr zeichnet sich der Visual C++ Error Parser verant-
wortlich, den wir weiter oben beim Einrichten des Projekts aktiviert
haben.
Den Suchpfad der Header-Dateien entnimmt Visual C++ aus der Suchpfad fr
Header-Dateien
anpassen
Umgebungsvariablen INCLUDE. Demzufolge mssen Sie diese mit den
korrekten Pfaden den Einstellungen hinzufgen, was sinnvollerweise
auch in den globalen Eclipse-Einstellungen geschehen sollte. Auf mei-
nem System lauten Sie:
C:\Programme\Microsoft Visual Studio 10.0\VC\INCLUDE
C:\Programme\Microsoft SDKs\Windows\v7.0A\include
Natrlich knnen sich auch hier die Pfade bei Ihnen unterscheiden
7
.
Wie oben werden die einzelnen Verzeichnisse durch ein Semikolon ;
getrennt.
Da Sie schon einmal dabei sind: Neben dem bersetzungspro- Suchpfad fr
Bibliotheken anpassen gramm wird auch ein Linker bentigt, der weitere Dateien einliest.
Hiermit sind vor allem die Bibliotheken gemeint, nach denen in diver-
sen Verzeichnissen gesucht wird. Die dafr ausgelesene Umgebungsva-
riable lautet LIB. Die Pfade knnen folgendermaen aussehen:
C:\Programme\Microsoft Visual Studio 10.0\VC\LIB
C:\Programme\Microsoft SDKs\Windows\v7.0A\lib
Konikte beim Aufrufen von Kommandos. Ein weiterer Fehler u-
ert sich folgendermaen im Console-View:
link: extra operand /OPT:REF
Try link --help for more information.
Dies ist nicht etwa eine Fehlermeldung, die vom Microsoft-Programm
link ausgeworfen wurde, sondern vom GNU-Programm link, das durch
eine Installation von Cygwin seinen Weg auf Ihren Rechner gefunden
hat. Wenn Sie sicherstellen, dass das Cygwin-Verzeichnis im Komman-
dosuchpfad nach dem Visual C++-Verzeichnis erscheint, dann ist auch
dieses Problem ad acta gelegt.
Konnten Sie die beschriebenen Probleme lsen? Falls ja, dann drfte
einer erfolgreichen bersetzung nichts mehr imWege stehen. ImProjekt
7
Haben Sie keine Idee, wie die Pfade auf Ihrem System lauten knnten, so
hilft Ihnen die Visual Studio 2010-Eingabeaufforderung weiter, die Sie ber das
Startmen aufrufen. Den korrekten Pfad erhalten Sie nmlich, indem Sie darin
z. B. echo %INCLUDE% eingeben.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
246 4 Der Build-Prozess
sehen Sie anschlieend zahlreiche neue Dateien, von denen die meisten
nicht weiter interessante Zwischenerzeugnisse sind. Die ausfhrbaren
Dateien nden Sie allerdings zur schnelleren bersicht wie gewohnt im
Binaries-Ordner wieder, falls Sie den Windows PE Binary Parser fr
das Projekt aktiviert haben.
JkDefrag mit make bersetzen
Verglichen mit make kommt nmake mit einigen Einschrnkungen da-
her. In diesem Unterabschnitt soll deshalb JKDefrag mit make als Steu-
erprogramm bersetzt werden. Als vorteilhaft erweist sich diese Vorge-
hensweise auch, wenn die Entwicklung generell mit Eclipse stattnden
soll, denn der in CDT eingebaute Makele-Editor versteht sich nicht
mit Makeles, die ausschlielich fr nmake geschrieben worden sind.
Setzen Sie hiefr das zum Bauen des Projekt aufzurufende Build-
Kommando von nmake auf make zurck und starten Sie anschlieend
den bersetzungsvorgang. Dies drfte Ihnen mit folgender Fehlermel-
dung quittiert werden:
Makefile:20:
***
missing separator. Stop.
Selbstverstndlich wollen wir der Meldung auf den Grund gehen. ff- Inkompatibilitten
identizieren nen Sie deshalb die Datei Makefile. Schon der Outline-View hat eini-
ge Fehlermeldungen parat. Ein weiteres Fehlersymbol bendet sich in
der linken Leiste des Texteditors. Es zeigt die Stelle an, die durch den
(normalerweise aktiven) Make Error Parser anhand obiger Fehlermel-
dung gefunden wurde. Ein genauer Blick in der Zeile offenbart, dass
die Stelle, die die Build-Anweisungen enthlt, durch Leerzeichen ein-
geleitet wurde, obwohl zumindest GNU Make zu diesem Zwecke ein
Tabulator-Zeichen verlangt.
Abb. 4-36
Outline-View fr das
mitgelieferte Makele
von JKDefrag
Entfernen Sie alle Leerzeichen vor den Build-Anweisungen und fgen Modikationen am
Makele Sie anstelle dessen einen Tabulator ein. Dabei knnen Sie den Out-
line-View zu Rate ziehen, um die Probleme zu identizieren und per
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
4.11 Microsoft Visual C++ einbinden 247
Doppelklick die entsprechenden Stellen anzuspringen. Ist im Outline-
View kein weiterer Fehler erkennbar, so gilt es noch, die Anweisungen
zu modizieren: Im Auslieferungszustand des Makeles werden inter-
ne Kommandos wie erase und copy verwendet, die fr andere Shells
oder Programme nicht verfgbar sind. Diese Aufrufe sollten Sie des-
halb durch rm -Rf bzw. cp ersetzen, die allesamt Bestandteil von MSYS
oder Cygwin sind, bevor Sie den bersetzungsvorgang erneut in die
Wege leiten.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
391
Literaturverzeichnis
[1] Berkeley Unied Parallel C Project. http://upc.lbl.gov/.
Online, Zugriff am 20. 10. 2010.
[2] Interview mit Wayne Beaton. Eclipse Magazin 5.2009, Seiten
4345.
[3] Boost C++ Libraries. http://www.boost.org/, 2008. Online,
Zugriff am 20. 10. 2010.
[4] Scott Chacon. Pro Git. Apress, Berkeley, CA, USA, 2009.
[5] Dimitri van Heesch. doxygen. http://www.doxygen.org/, 2008.
Online, Zugriff am 20. 10. 2010.
[6] Eclipse Foundation. EclipseCon. http://www.eclipsecon.org/.
Online, Zugriff am 20. 10. 2010.
[7] Martin Fowler. Refactoring Home.
http://www.refactoring.com/. Online, Zugriff am 20. 10. 2010.
[8] GCC-Team. Incremental Compiler Project.
http://gcc.gnu.org/wiki/IncrementalCompiler, 2008. Online,
Zugriff am 20. 10. 2010.
[9] Mik Kersten. Focusing knowledge work with task context.
PhD thesis, The University of British Columbia, 2007.
[10] J.C. Kessels. JkDefrag. http://www.kessels.com/Jkdefrag/.
Online, Zugriff am 20. 10. 2010.
[11] Ulla Kirch und Peter Prinz. C++ Lernen und professionell
anwenden. MITP, Bonn, 2010.
[12] Donald E. Knuth. Literate Programming. Technical report
STAN-CS-83-981, Stanford University, Department of
Computer Science, 1983.
[13] Achim Khler. Der C/C++-Projektbegleiter. dpunkt.verlag,
Heidelberg, 2007.
[14] Open Source Initiative. Webseite. http://www.opensource.org/.
Online, Zugriff am 20. 10. 2010.
[15] Orcale. VirtualBox. http://www.virtualbox.org/, 2010.
Online, Zugriff am 20. 10. 2010.
[16] The GNU Project. Bison GNU parser generator.
http://www.gnu.org/software/bison/, 2008. Online, Zugriff am
20. 10. 2010.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
392 Literaturverzeichnis
[17] The GNU Project. GNU Debugger.
http://www.gnu.org/software/gdb/, 2008. Online, Zugriff am
20. 10. 2010.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
393
Glossar
Ant Ant ist ein Build-Tool hnlich Make, allerdings in Java geschrieben
und auch am besten fr Java-Projekte geeignet.
Binary Parser Binary Parser werden auf binre Dateien angewandt, um
an ihre Symbole und Debuginformationen zu gelangen.
CMake CMake ist ein Werkzeug, das den Build-Prozess anhand von
einfach gestrickten Kongurationsdateien steuert. Die Durchfh-
rung des Build-Prozesses wird allerdings einem anderen Werkzeug
wie Make berlassen. Das Prinzip der Managed-Build-Projekte ist
dem Prinzip von CMake hnlich, wenngleich CMake derzeit leis-
tungsfhiger ist.
Container Als Container werden Ressourcen bezeichnet, die weitere
Ressourcen aufnehmen knnen.
CPL Die Abkrzung CPL steht fr Common Public License und ist
die Lizenz, unter der Eclipse vor EPL gestellt wurde. nderungen
an den unter CPL gestellten Modulen mssen in Form von Quel-
len ebenfalls unter der CPL verffentlicht werden. Im Gegensatz
zur GPL knnen sich darauf beziehende neue Module jedoch unter
einer anderen Lizenz gestellt werden.
Editor Im Editor werden Ressourcen eines Projekts bearbeitet. Je nach
Art der zu bearbeitenden Ressource kann dies ein Texteditor sein,
ein Formular oder eine Mischform. Editoren nden ausschlielich
im Editorfeld Platz.
EFS Die Abkrzung EFS steht fr Eclipse File System. Es ist eine ab-
strakte Schnittstelle fr Dateisysteme in Eclipse, bei der alle Res-
sourcen durch eine URI reprsentiert werden. Damit knnen auch
Ressourcen auf nicht lokalen Dateisystemen in Eclipse eingebunden
werden.
EPL Die Abkrzung EPL steht fr Eclipse Public License und ist der
Nachfolger der CPL.
Error Parser Error Parser scannen die Ausgabe von durch CDT gestar-
teten Werkzeugen und extrahieren daraus Warnungen und Fehler.
GPL GPL steht fr GNU General Public License. Programme, die un-
ter GPL stehen, sind frei verfgbar. Quellen mssen auf Anfrage
verfgbar gemacht werden. Alle Programme, die der ffentlichkeit
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
394 Glossar
zugetragen werden und die von GPL-Programmen abgeleitet sind,
mssen ebenfalls unter die GPL gestellt werden.
Konguration Eine Konguration enthlt Voreinstellungen fr Para-
meter von Werkzeugen der ausgewhlten Toolchain.
Make Make wird durch das sogenannte Makele gesteuert und dient
der automatischen Durchfhrung des Build-Prozesses.
Navigations-View Im Navigations-View werden Ressourcen in ihrer
hierarchischen Struktur angezeigt. Ein Beispiel ist der C/C++ Pro-
jects-View, der fr die C/C++-Entwicklung besonders dienlich ist.
Open Source Initiative Die Open Source Initiative ist mit dem Ziel ge-
grndet worden, Open-Source-Software zu frdern.
Perspektive Perspektiven denieren fr verschiedene Aufgabengebiete
wie das Bearbeiten oder das Debuggen von Programmen unter-
schiedliche Komponenten, die auf der Workbench geffnet sind.
Tool Ein Tool bindet im Sinne von CDT ein externes Werkzeug in den
bersetzungsprozess ein. Die Denition eines Werkzeugs enthlt
neben dem aufzurufenden Kommando, den Typ der Eingabedatei,
den Typ der daraus erzeugten Datei und die mglichen Parameter,
die das Verhalten des Werkzeugs beeinussen.
Toolchain Bei CDT versteht man unter einer Toolchain eine geschlos-
sene Sammlung von Tools oder Werkzeugen, die beim berset-
zungsvorgang je nach Vorhandensein von Ressourcen zur Anwen-
dung kommen knnen.
Ressourcen Ressourcen sind im Sinne von Eclipse Dateien und Ver-
zeichnisse, die von Ihnen oder von Eclipse selbst erzeugt worden
sind und auf denen Aktionen durchgefhrt werden knnen. Die
hierarchische Anordnung von Ressourcen bekommen Sie in einem
Navigations-View zur Ansicht.
View Views sind Komponenten auf der Workbench, die Informatio-
nen ber Ressourcen oder Ansichten dieser darstellen. Der Outli-
ne-View prsentiert z. B. die Struktur einer C/C++-Quelltextdatei.
Views haben nicht nur auf dem Workbench-Fenster Platz, sondern
knnen in ein eigenes Fenster ausgelagert werden.
Workbench Das Workbench-Fenster ist die Benutzeroberche von
Eclipse. Hier werden Projekte bearbeitet und Aktionen durchge-
fhrt. Die Oberche besteht hauptschlich aus Editoren, Views
sowie Werkzeug- und Menleisten.
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
395
Index
A
Abstract Syntaxt Tree, 76
AmigaOS4, 232
Annotationen, 111113
ANSI/VT102, 359, 370
Ant, 393
Applikationsargument, 16
-launcher.XXMaxPermSize, 17
-clean, 17
-data, 17, 18
-nl, 17
-showsplash, 17
-vm, 17
Arbeitsbereich, siehe Workspace
Arbeitskopie, 296
bertragen, 296
aktualisieren, 296
auschecken, 296
AST, siehe Abstract Syntax Tree
Aufgaben, siehe Tasks
aufgabenfokussiert, 343
Ausfhren, siehe Run
Authentizierung, 235
authorized
_
keys, 59
B
Barrierefreiheit, 52
Basisklasse, 85
Modier, 86
Bedingter Haltepunkt, 274
Bezeichner umbenennen, 140
Bibliothek
dynamisch, 81
statisch, 81
Binary Parser, 165, 203206
bison, 223, 224
Blockauswahlmodus, 104
Bookmarks, 127
Boost, 96
fr Linux, 97
fr Windows, 97
Breakpoint, 267
Aktionen, 273
Bedingungen, 274
Eigenschaften, 272
fr Adressen, 271
fr Daten, 271
fr Ereignisse, 272
fr Zeilen, 269
Threads, 275
Bugzilla, 349
Build-Konguration, 78, 82
aktivieren, 187
verwalten, 187
Build-Prozess, 78, 177
Build-Variable, 182186
Beispiel, 186, 238
dynamisch, 186
fr den Workspace, 185
fr Umgebungsvariablen, 186
Gltigkeitsbereich, siehe Scope
mit Argumenten, 186
referenzieren, 183
Scope, 183
Typ, 183
Builder, 178182
Autotools, 375
CDT, 182
entfernen, 181
hinzufgen, 180
importieren, 181
Scanner Conguration, 181, 215
verwalten, 180
Builder-Assoziationen, 179
C
C/C+ Literatur, x
CDT Entstehungsgeschichte, ix
CDT-Parser, 76
CMake, 393
Code-Generatoren, 223
Code-Style, 106
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
396 Index
Compiler, 3, 177
Optionen, 199
Compiling, siehe bersetzen
Conditional Breakpoint, siehe Bedingte
Haltepunkte
Content-Assistenz, 116118
CPL, viii, 393
Cross-Compiling, 231
CVS, 294
Branches, 304
Dates, 304
HEAD, 304
Kritikpunkte, 295
Server unter Linux installieren,
298
Server unter Windows
installieren, 297
Version, 304
.cvsignore, 315
Cygwin, 8
installieren, 911
D
Dateiattribute
Archive, 96
Derived, 96, 178
Read only, 96
Dateien erzeugen, 83
Dateienvergleich, 129
Debugger, 45
Default Editor, 163
Defragmentierung, 239
Depot, siehe Repository
Dialog
Path Mappings, 262
CVS-Repository hinzufgen, 301
Debug, 250
Edit Template, 174
Installation Details, 25
Open Element, 166
Properties, 94
Quelltextsuchpfade, 262
Run, 250
Select Working Set, 136
Set Property, 328
Dirscanner, 96
Dokumentationswerkzeuge, 125127
doxygen, 125
Editoruntersttzung, 126
Launcher, 255
DragnDrop, 35, 158, 160, 163
E
eclipse, 69
Eclipse, vii
Eclipse Marketplace, siehe Marketplace
Eclipse-Archiv, 4
CDT, 4
Classic, 5
Platform Runtime Binary, 5
SDK, 5
Eclipse-Foundation, viii
Eclipse-Konsortium, viii
Eclipse-Verzeichnis, 69
configuration, 70
dropins, 71
features, 71
p2, 71
plugins, 71
readme, 71
eclipse.exe, 69
eclipse.ini, 1617, 70, 71
eclipsec.exe, 71
Editoren, 34
Autoconf-Dateien, 375
Automake-Dateien, 375
C/C+-Dateien, 104
Compare, 129, 311
Makele-Dateien, 128, 246
Tasks, 345
Editorschablonen, 172173
Attribute, 172
Variablen, 173
EFS, 234, 393
EPL, viii, 393
Erkennungsprole, 194
Error Parser, 206, 218219, 235
Ersetzen, dateibergreifend, 167171
Erweiterungen, siehe Plugins
Exception, 272
external linkage, 76
Extrahieren
Funktionen, 145
Konstanten, 143
Lokale Variablen, 144
Methoden, 145
F
Features, 19, siehe Plugins
Fehlerparser, siehe Error Parser
ffmpeg, 90
Filter
bersetzungsfehler, 221
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
Index 397
Quellverzeichnisse, 189
Target Management, 358
Formatieren, 105
Funktionen extrahieren, 145
FUSE, 236
G
GDB, 371
GDBServer, 371
Getters erzeugen, 124
Git, 296, 330
Gleichzeitige Verffentlichungen, viii
Globale Bezeichner umbenennen, 141
GPL, 393
GProf, 387
Grasche Symbole, siehe Piktogramme
Grammatik, 223
H
Hallo Welt, 11
Haltepunkt, siehe Breakpoint
Header-Dateien
anlegen, 84
durchsehen, 158
Hilfesystem, 48
Aufbau, 48
aufrufen, 49
durchsuchen, 51
dynamisch, 51
kontextbezogen, 51
View, 51
Webadresse, 51
Historie
lokal, 128, 132133
Refaktorisierungen, 148
I
Importieren, 8993
In-Place Editor, 163
Include-Datei, siehe Header-Datei
Include-Guards, 88
Index aktualisieren, 154
Indexer, 76, 151157
anwenden, 154
Datenbank, 155
Probleme, 156
Starten, 76
Voreinstellungen, 155
Inxnotation, 224
Inkscape, 234
Voraussetzungen, 13
Installation, 330
Linux, 57
Mac OS X, 3
Windows, 816
J
Java, vii
unter Linux installieren, 7
unter Windows installieren, 14
Java Development Tools, siehe JDT
JDT, 3
JkDefrag, 239
K
Klasse erzeugen, 85
Kommandogruppe, 63
Kommandosuchpfad, 243
Konstanten extrahieren, 143
Kontakt, xi
Konzepte
CDT, 76
Eclipse, 31
Mylyn, 347
Target Management, 358
L
Launch-Konguration
C/C+ Local Application, 252
C/C+ Remote Application, 371
Lesezeichen, siehe Bookmarks
Link with Editor, 164
Linked Resource, siehe verknpfte
Ressource
Linker
Einstellungen, 213
Bibliotheken, 230
Suchpfad, 103
Optionen, 199
Literate Programming, 125
Literatur
C/C+, x
Subversion, 320
Lokale Bezeichner umbenennen, 140
Lokale Variablen extrahieren, 144
M
Mac OS X, 3
Make, x
Make Targets
bauen, 215
Build-Variablen, 215
entfernen, 216
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
398 Index
hinzufgen, 214
ber Outline-View, 215
View, 213
Makele, 81, 128
Piktogramme, 128
Makros untersuchen, 119120
Managed Build, 187190
Cross-Compiling, 231
Dateien ausschlieen, 189
individuelle Optionen, 190
Verzeichnisse aufnehmen, 187
Marketplace, 27
Marketplace Client, 27
Mathematische Operatoren
Assoziativitt, 224
Prioritt, 224
Meilensteine, 5
Menleiste, 32
anpassen, 6264
Metadateien, 175176
Methoden
extrahieren, 145
Gerst erzeugen, 124
implementieren, 124
verstecken, 148
MinGW, 8, 12, 13
Mylyn, 343355
N
Namensraum, 85
Navigations-View, 162
C/C+ Projects, 164
Navigator, 164
Project Explorer, 166
Nightly Builds, 5
O
Online-Hilfe, siehe Hilfesystem
Open Source Initiative, siehe OSI
OpenOfce, 295
OpenSSH, siehe SSH2
OProle, 388
OSI, 8, 394
P
p2, 2930
Prol, 29
Parser, 149
Parsergeneratoren, 223
Passwortspeicher, 60
Perspektive, 37, 394
Git Repository Exploring, 332
anlegen, 65
C/C+, 39
CVS Repository Exploring, 299
Debug, 46
entfernen, 65
Planning, 349
Remote System Explorer, 359
SVN Repository Exploring, 321
Team Synchronizing, 309, 338
berschreiben, 65
zurcksetzen, 65
Piktogramme, 77
im Debug-View, 264
im Outline-View
C/C+, 77
Makele, 128
Target-Management-Ressourcen,
365
Plugins, vii, 19, 71
EGit, 330
Extended VS Presentation, 68
Subclipse, 295, 320330
Subversive, 295
Target Management, 357
aktualisieren, 25
beziehen, 22
verwalten, 25
Prol
p2, 29
Target Management, 358
Programme ausfhren, 250
Programmverzeichnis, siehe
Eclipse-Verzeichnis
Projekt
Art, 179
Beispiele
cache, 384387
calc, 224231
dirscanner, 96, 99104
bonacci, 3847, 94
hw-amiga, 232234
mem, 382384
membug, 378381
erzeugen, 80
homogen, 179
importieren, 8993
lschen, 93
Nature, siehe Art
Schablone, siehe Template
Template, 81
Typ ndern, 94
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
Index 399
Projektarchiv, siehe Repository
Projekttyp, 8082
Propertys
Ressource, 94
Q
QNX, ix
Quelltext formatieren, siehe
Formatieren
Quelltextdatei
anlegen, 84
Quelltextnavigation, 115116
Letzte nderung, 115
Quellverzeichnis, 89
angeben, 187
anlegen, 89
ltern, 189
Quick-Fix, 115
R
RCS, 294
Redo, 128
Refaktisierungen
Lokale Variablen extrahieren, 144
Refaktorisierungen, 139148
Funktionen extrahieren, 145
Historie, 148
Konstanten extrahieren, 143
Methoden extrahieren, 145
Methoden verstecken, 148
Umbenennen von
Bezeichnern, 140
Bezeichnern global, 141
Bezeichnern lokal, 140
Ressourcen, 139
Regulre Ausdrcke, 121
Remote Compiling, 234
Remote Shell, 359
Remote-Debugging, 289, 371
Repository, 295, 296
Ressource-Delta, 178
Ressourcen, 32
umbenennen, 139
Root-Verzeichnis, 9, 39
Run, 45
S
Schablonenmodus, 173
Secure Shell, siehe SSH2
Setters erzeugen, 124
SFTP, 236
Shortcuts anpassen, 64
Signal, 272
Skin-Plugins, 68
Smalltalk, vii
Smart Indention, 107
Source Folder, siehe Quellverzeichnis
SourceForge, 352
Speichermonitor, 283
Speicherort von Projekten, 80
Sprachkataloge, 94
.ssh, 59
SSH2, 58, 235
Client, 58
DSA, 59
Key Management, 58
Passwortspeicher, 60
RSA, 59
Schlsselverwaltung, 58
sshfs, 236
Standardausgabestrom, 45, 254
Standardfehlerstrom, 254
Startkonguration, siehe
Launch-Konguration
Startup-Code, 200
Statusleiste, 34
Stubs, 174
Subclipse, 295, 320330
Subversion, siehe SVN
Subversive, 295
Suchen
dateibergreifend, 167171
Texteditor, 120123
Suchpfad
Bibliotheken, 103, 195
Header-Dateien, 102, 195
Kommandos, 39, 243
SVN, 295
Dokumentation, 320
Historie, 325
ignorieren, 327
markieren, 325
Projekte einchecken, 324
Propertys, 328330
svn:eol-style, 329
svn:executable, 329
svn:externals, 330
svn:ignore, 330
svn:keywords, 329
svn:mergeinfo, 329
svn:mime-type, 329
taggen, siehe markieren
System Editor, 163
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
400 Index
T
Target Management, 357372
Filter, 358
Filterpool, 358
Prol, 358
Systemtyp, 358
Verbindungen, 358
Tasks, 136
anzeigen, 138
hinzufgen, 137
Schlsselwrter, 137
Tastatursteuerung, 5253
anpassen, 65
Assistent, 52
Tastenkrzel, 52
Team, siehe Versionsverwaltung
Template
Datei anlegen, 84
Projekt, 81
Terminals, 370
Texteditoren
nderungsanzeige, 110
Elemente unterlegen, 109
Falten, 110
Leerrume, 108
segmentierte Ansicht, 109
Semantic Highlighting, 107
Syntax Highlighting, 107
Zeilennummer, 110
Textkodierung, 94
Titelleiste, 35
Tool, 78
Toolchain, 78, 82, 206
bearbeiten, 206
U
bersetzen, 78, 193, 230
aufrumen, 178
automatisch, 39, 178
entfernt, 234
Fehler, 220
inkrementell, 39, 178
vollstndig, 178
bersetzungsfehler, 220
ltern, 221
Umbenennen von
Bezeichnern, 140
global, 141
lokal, 140
Ressourcen, 139
Umgebungsvariablen
PATH, 39, 199, 244
Undo, 128
Unied Parallel C, 3
UPC, siehe Unied Parallel C
Update-Sites, 19, 22
V
Valgrind, 249, 377378
cachegrind, 384
massif, 382
memcheck, 377
VAME, vii
Variablen
umbenennen, 140
Venn-Diagramme, 183
Verknpfte Ressource, 32
erstellen, 84
Versionsverwaltung, 293
Motivation, 294
Verstecken von Methoden, 148
Verteilte Dateisysteme, 237
Verzeichnisse anlegen, 88
View, 34
Bookmark, 127
Breakpoints, 267
C/C+ Projects, 164
C/C+-Index, 155
CVS Repositories, 299
Call Hierarchy, 160
Console, 216
Console-View, 45
Debug, 263
Disassembly, 271, 281
Executables, 287
Executable, 165
Expressions, 278
Git Repositories, 332
Help, 51
History
CVS, 309
SVN, 325
Include Browser, 158
Make Targets, 213
Markers, 112
Memory, 283
Modules, 282
Navigator, 164
Outline, 35, 42, 157
Problems, 220
Project Explorer, 166
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)
Index 401
Register, 279
Remote Monitor, 361
Remote Shell, 369
Remote Systems, 360
SVN Properties, 328
SVN Repositories, 321
Search, 169
Signals, 281
Synchronize, 338
Task List, 345
Task Repositories, 349
Task, 138
Terminals, 370
Type Hierarchy, 161
Valgrind, 379
Variables, 35, 276278
gprof, 387
Views, 394
VisualAge, vii
Visual C+, 3, 239
Express-Edition, 240
installieren, 240
Keybindings, 239
Theme, 68
Voreinstellungen
nderungsanzeige, 111
Build Variables, 185
Build-Konsole, 218
Code Style, 106
Code Templates, siehe
Quelltextschablonen
Content-Assistenz-Trigger, 118
CVS, Dekorationen, 305
Dekorationen, 163
Dokumentationstool, 126
Dokumentationswerkzeuge, 125
Editierhilfen, 107
Editorschablonen, 172
Elemente unterlegen, 109
Erscheinungsbild, 67
Falten, 110
Farben des Variables-View, 277
Globaler Quelltextpfad, 263
Ignorierte Ressourcen, 316
Indexer, 155
Komponenten, 60
Launch-Konsole, 258
Lokale Historie, 132
Markerlimit, 112
Netzwerk, 58
Passwortspeicher, 60
Perspektiven, 65
Proxy, 20
Quelltextschablonen, 174
Ressourcen automatisch
auffrischen, 55
Start und Ende, 57
Syntax Highlighting, 108
Tastatursteuerung, 65
Textkodierung, 57
Umgebungsvariablen, 39, 244
Undo-Tiefe, 128
W
Wascana, 8, 15
nachtrglich installieren, 16
Watchpoints, 271
Webseite, xi
Werkzeugleiste, 34
anpassen, 6264
Wikibook, x
Willkommensbildschirm, 18
Window Working Set, 136
Wizard
Checkout (SVN), 322
Commit, 306, 313
Create Patch, 318
New C+ Class, 85, 174
New Project, 80
Autotools, 374
Install New Software, 20, 21
Workbench, 32, 394
Workbench Working Set, siehe Window
Working Set
Working-Sets, 133136, 164
erstellen, 134
Workspace, 18, 31
Wurzelverzeichnis, siehe
Root-Verzeichnis
Y
yacc, 223
Z
Zeilenbegrenzer, 95
konvertieren, 95
ExkIusiv Iizensiert fr Studierende der HSR RapperswiI
fr das Frhjahrssemester 2011 (20. Februar 2011 bis 30. September 2011)