Eclipse für C/C++-Programmierer - Sebastian Bauer - E-Book

Eclipse für C/C++-Programmierer E-Book

Sebastian Bauer

0,0

Beschreibung

Sind Sie C/C++-Programmierer und wollen Sie Eclipse und die C/C++ Development Tools (CDT) in Ihren Projekten einsetzen? Dann bietet Ihnen dieses Buch einen schnellen Einstieg und wird Ihnen bei der täglichen Arbeit als Nachschlagewerk gute Dienste leisten. Im ersten Teil erläutert Autor Sebastian Bauer, wie Sie Eclipse und CDT auf einem Windowsoder Linux-Rechner installieren, bevor er Sie anhand eines einfachen Projektes mit den wichtigsten Merkmalen der Entwicklungsplattform vertraut macht. Der Hauptteil des Buches vermittelt Ihnen die Konzepte der IDE, gegliedert nach den typischen Phasen eines Entwicklungsprojektes: • Erstellen und Bearbeiten von Projekten • Build-Prozess • Ausführen und Debuggen Dabei werden konkrete Probleme angesprochen und gelöst, z.B.: Wie bindet man Codegeneratoren à la "bison" ein? Oder: Wie lässt sich Remote Compiling realisieren? Der dritte Teil widmet sich weiterführenden Themen und behandelt u.a. die Verwaltung entfernter Ressourcen, das Remote Debuggingund das Profiling. Nach der Lektüre des Buches kennen Sie die Stärken - und auch die Schwächen - von Eclipse CDT und wissen den Alltag eines C/C++-Entwicklers mit Eclipse zu meistern. Die 3. Auflage wurde komplett aktualisiert und ergänzt um aktuelle Themen wie dem Cross-Compiling für den Raspberry Pi, Git als Versionskontrollsystem sowie der Docker-Anbindung von Eclipse.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 521

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Sebastian Bauer arbeitet als wissenschaftlicher Mitarbeiter am Klinikum Charité in Berlin. Erste Gehversuche mit Eclipse unternahm er während eines Praktikums bei IBM, das er im Rahmen seines Informatikstudiums durchführte. Seitdem ist ihm Eclipse bei der Softwareentwicklung ein ständiger Begleiter, den er nicht nur im Beruf einzusetzen weiß. In seiner Freizeit betreut er verschiedene Open-Source-Projekte für Amiga-Betriebssysteme. Zudem ist er seit 1999 Mitentwickler aktueller Versionen des Amiga-Betriebssystems. Als Autor veröffentlichte er Artikel über Eclipse und CDT im Amiga Magazin und im Eclipse Magazin.

Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern – können Sie auch das entsprechende E-Book im PDF-Format herunterladen. Werden Sie dazu einfach Mitglied bei dpunkt.plus+:

www.dpunkt.de/plus

Eclipse für C/C++-Programmierer

Handbuch zu den Eclipse C/C++ Development Tools (CDT)

3., aktualisierte und erweiterte Auflage

Sebastian Bauer

Sebastian Bauer

[email protected]

Lektorat: René Schönfeldt

Copy-Editing: Annette Schwarz

Satz: DaTeX, Leipzig

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

Buch:    978-3-86490-196-6

PDF:    978-3-86491-785-1

ePub:    978-3-86491-786-8

mobi:    978-3-86491-787-5

3., aktualisierte und erweiterte Auflage 2016

Copyright © 2016 dpunkt.verlag GmbH

Wieblinger Weg 17

69123 Heidelberg

Die vorliegende Publikation ist urheberrechtlich geschützt. 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 für die Vervielfältigung, Ü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 größter Sorgfalt kontrolliert. Weder Autor noch Verlag können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der Verwendung dieses Buches stehen.

5 4 3 2 1 0

Für G.

Vorwort

Über Eclipse

VisualAge

Der Ursprung von Eclipse liegt in VisualAge, IBMs Produktlinie von integrierten Entwicklungsumgebungen für eine Vielzahl verschiedener Programmiersprachen, darunter C, C++, Fortran, Java und Smalltalk. Anfänglich waren diese Programme in der Sprache Smalltalk geschrieben, die sich Mitte der 90er Jahre großer Beliebtheit erfreute. Durch das aufkeimende frei beziehbare Java verblasste die Popularität von Smalltalk 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-fähige eingebettete Systeme ab.

1999: VAME

Für seine Oberfläche nutzte VAME ein eigenes Toolkit, das Standard Widget Toolkit (SWT), was für Java-Applikationen sehr ungewöhnlich war, aber den Vorteil hatte, das native Feeling des Betriebssystems zu wahren. Ein flinker inkrementeller Java-Compiler wurde hinzugefügt und machte es möglich, dass Projekte zu jedem Zeitpunkt auch in übersetzter Form vorlagen. Unter der Haube war die IDE sehr flexibel, so konnte sie durch Plugins erweitert werden. Der richtige Erfolg wollte sich jedoch noch nicht einstellen.

2001: Eclipse

Die Erfahrungen, die die Entwickler in der VisualAge-Reihe sammelten, und das Framework von VAME flossen zusammen und mündeten schließlich in einem neuen Produkt, das IBM unter dem Namen Eclipse im November 2001 in die Öffentlichkeit trug. Die Ankündigung sorgte für viel Furore, denn im Gegensatz zu VisualAge wurden die Quellen offengelegt. IBM brüstete sich mit einer Wohltat an die Open-Source-Gemeinde: Der Wert der Quellen betrüge 40 Millionen US-Dollar. Der Name war zynisch gewählt, denn Eclipse (zu Deutsch: Finsternis) stand in direkter Konkurrenz zu NetBeans, das ein Jahr zuvor durch Java-Mutter Sun (zu Deutsch: Sonne) als Open Source zur Welt gebracht wurde und ebenfalls als IDE für Java um die Gunst der Entwickler buhlte.

Eine Plattform für alles und nichts im Besonderen

Eclipse ließ sich jedoch nicht auf eine Java-IDE reduzieren. Das 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.

Das Eclipse-Konsortium

Zeitgleich zur ersten Veröffentlichung wurde das Eclipse-Konsortium eclipse.org von den Firmen Borland, IBM, MERANT, QNX Software Systems, Rational Software, Red Hat, SuSE, TogetherSoft und Webgain gegründet. Fortan fasste dieses Konsortium die Entwicklung der Plattform unter einem Dach zusammen. Es schrieb sich auf die Fahne, alle beigesteuerten Produkte und deren Quellen unter die von der Open Source Initiative [18] akzeptierte Common Public License (CPL) zu stellen. Zahlreiche andere Hersteller schlossen sich mit der Zeit dem Konsortium an. Die Mitglieder verpflichteten sich neben der Leistung von Beiträgen auch zur Bereitstellung von Mitarbeitern.

2004: Eclipse wird gemeinnützig.

Auf der ersten, von da an jährlich stattfindenden Eclipse-Konferenz Anfang 2004 [9] wurde bekannt gegeben, dass das Konsortium zu einer unabhängigen Non-Profit-Organisation, der Eclipse Foundation, umorganisiert werden sollte. Man stellte die bis dato initiierten Projekte unter die Eclipse Public License (EPL), und die ohnehin schon große Gemeinde bekam weitere neue Mitglieder. Inzwischen zählt sie knapp 220 Unterstützer (Stand Juni 2015).

Ab 2006: Koordinierte Veröffentlichung von Eclipse-Projekten

Die Veröffentlichung von Eclipse findet zusammen mit weiteren Projekten wie der Java-Entwicklungsumgebung oder aber auch CDT seit dem Jahr 2006 synchronisiert statt. Die Zusammenfassung der sonst unabhängigen Projekte wurde vorgenommen, weil die Plattform Eclipse nicht nur stetige Erweiterungen erfuhr, sondern auch tiefgreifende Änderungen im Kern umfasste, die in Teilen Inkompatibilitäten zu vorherigen Revisionen verursachten. Benutzer können zumindest von den unter gleicher Bezeichnung veröffentlichten Paketen sicher sein, dass sie ohne solche auftretenden Kompatibilitätsprobleme miteinander harmonieren. In der Regel folgen einer koordinierten Veröffentlichung innerhalb eines Jahres zwei sogenannte Service-Releases, die fast ausschließlich Bugfixes beinhalten, zumindest was die Eclipse-Plattform angeht, bevor im Sommer des nächsten Jahres der neue Zyklus beginnt.

Jupitermonde als Namensgeber

Die Zyklen trugen in der Vergangenheit zunächst die 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 befürchtete, dass die Anzahl der Jupitermonde (von denen laut Wikipedia heute mindestens 67 bekannt sind) nicht hoch genug ist. So ließ es sich jedenfalls ein Eclipse-Entwickler in einem Interview im Eclipse-Magazin [3] 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...

Abb. 1 Anzahl der Eclipse-Projekte, die bei den jährlichen Veröffentlichungen teilnahmen

Weitere Entwicklung

Der Release-Zyklus von 2009, der 33 Projekte beinhaltete, erhielt schließlich den Namen Galileo, zu Ehren jenes italienischen Astronoms, der 400 Jahre zuvor mit einem selbst gebauten Fernrohr u. a. die bisherigen Namensgeber entdeckte. Über die folgenden Zyklen gibt Abbildung 1 Aufschluss. Hervorzuheben ist dabei das Juno-Release, das ganz im Zeichen der neuen Eclipse-4-Plattform stand, die jedoch anfänglich insbesondere aufgrund von Performance-Regressionen durch eher negative Schlagzeilen auf sich aufmerksam machte [16]. Inzwischen sind diese aber weitgehend behoben. Auch Features wie die Möglichkeit des Umsortierens von Perspektiven, die die Eclipse-Plattform vor Version 4.0 mit sich brachte, sind spätestens seit Luna wieder verfügbar, die Vorgängerversion von Mars, auf der dieses Buch basiert.

Lockerung in der Projekteveröffentlichung

Koppelte man zu Beginn den Veröffentlichungszyklus der teilnehmenden Projekte tatsächlich fest an den Zyklus der koordinierten Veröffentlichungen, ist es inzwischen nicht unüblich, dass einzelne Projekte pro Eclipse-Jahr häufigere stabile Veröffentlichungen vornehmen. Bei CDT einigte man sich, bis zu zwei Zwischenversionen außerhalb des jährlichen Zyklus einzuschieben, die Teil der Service-Releases sind. Beispielsweise beinhaltete die erste Luna-Veröffentlichung im Jahr 2014 CDT 8.4, während das zweite Service-Release von Luna, das im Februar 2015 fertiggestellt wurde, CDT 8.6 beinhaltete.

Über CDT

Entstehung von CDT

Ein halbes Jahr nach der ersten Veröffentlichung von Eclipse legte Konsortiums-Gründungsmitglied und Echtzeitbetriebssystem-Spezialist QNX Teile der Quellen seiner QNX Momentics Development Suite offen. QNX kündigte an, die Suite in das Eclipse-Framework einzufügen, und übernahm auch die Leitung des jungen CDT-Projekts, das zum Ziel hat, Eclipse mit einer flexiblen Unterstützung der Programmiersprachen C und C++ zu ergänzen. Im April 2003 folgte dann die erste Veröffentlichung von CDT für Eclipse 2.0. So wurde die Behauptung, Eclipse sei eine Mehrsprachenplattform, das erste Mal Realität: Neben einfachem Syntax Highlighting für C und C++ integrierte man die GNU-Toolchain, wobei auch der Debugger nicht ausgelassen wurde.

Aktuelle Version

CDT war auch Teil der ersten koordinierten Veröffentlichung der Eclipse-Projekte im Jahr 2006, zu der es CDT schon bis zur Version 3.1 geschafft hatte. 2010 wurde bereits Version 7.0 veröffentlicht, und seit Juni 2015 liegt CDT in Version 8.7 vor, die auch Gegenstand dieses Buchs ist. Der schnelle Sprung zu hohen Versionsnummern zeigt, dass CDT eine sehr dynamische Entwicklung hinter sich hat.

CDT macht vom Angebot der Eclipse-Plattform Gebrauch, eigene spezifische Erweiterungspunkte bereitzustellen. Das erlaubt auch für CDT ein gewisses Maß an Flexibilität. So ist es für einen Anbieter einer Compiler-Suite sehr leicht möglich, diese in das Eclipse-/CDT-Framework einzubinden.

Zielsetzung des Buchs

Es sind bereits zahlreiche Bücher ü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 nähern. Andere Plugins oder andere Programmiersprachen finden, wenn überhaupt, nur am Rande Erwähnung. Dieses Buch möchte die Lücke für die Programmiersprache C und ihren Abkömmling C++ schließen und den Leser in die Benutzung von Eclipse und CDT einführen.

Vorkenntnisse

Kenntnisse über Eclipse sind nicht notwendig. Weiterhin ist es unerheblich, in welcher Art und Weise der Leser seine C- oder C++-Projekte bisher verwirklicht hat, sei es mittels einer Entwicklungsumgebung wie Microsofts Visual Studio oder ganz traditionell über Texteditor, Make und Kommandozeile.

Keine Einführung in C oder C++

In die Programmiersprachen C und C++ kann das Buch jedoch nicht einführen. Hierfür existiert bereits sehr gute und umfangreiche Literatur [14], 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 werden kann. Die Handhabung von Werkzeugen, die unmittelbar mit der Programmiersprache assoziiert sind, wie z. B. Make, steht ebenso wenig im Vordergrund. Dennoch ist das Buch auch für C- oder C++-Einsteiger als Ergänzung zu einem Einführungsbuch von Interesse, da eine 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 empfinden. Beispielsweise sind Kenntnisse über das erwähnte Make bei vielen Projekten gar nicht nötig.

Hauptsächlich CDT »pur«

Das Buch beschreibt CDT in seiner rohen Form, so wie es von eclipse.org heruntergeladen werden kann. Erweiterungen, die in den CDT-basierten Entwicklungsumgebungen von Drittanbietern zu finden sind, spielen nur eine geringe Rolle. Da das Buch eine benutzerorientierte Einführung darstellt, wird auch die Beschreibung der API außen vor gelassen, die ausschließlich für die Entwicklung von Erweiterungen für CDT von Bedeutung ist. Ein solches Vorhaben erfordert selbstverständlich Kenntnisse über viele Konzepte und Abläufe von CDT, auf die in den entsprechenden Abschnitten detailliert eingegangen wird. Insofern werden Sie auch als potenzieller Plugin-Anbieter von der Lektüre profitieren können.

Buchaufbau

Einführung

Die Grobgliederung des Buchs besteht aus drei Teilen. Der erste Teil führt Sie in die Welt von Eclipse und CDT ein. Los geht’s mit einer Installationsbeschreibung, die je nach verwendeter Plattform und Anforderung mehr oder weniger kompliziert durchgeführt werden muss. Anschließend werden Sie in die Begriffe und die wichtigsten Prozeduren anhand eines eingängigen Beispiels eingeführt. So können Sie bereits nach kurzer Zeit einfache C- oder C++-Projekte mit Eclipse/CDT erstellen, bearbeiten, übersetzen, ausführen und debuggen.

CDT als Unterstützer in den einzelnen Phasen desEntwicklungsprozesses

Der zweite Teil orientiert sich an den einzelnen Phasen, die ein C- oder C++-Programmierer zu bewerkstelligen hat, damit am Ende ein lauffähiges Produkt zustande kommt. Es wird aufgezeigt, was mit Eclipse/CDT derzeit möglich ist, bei welchen Problemen Ihnen diese Kombination Hilfestellungen geben kann und was derzeit noch nicht oder nur unzureichend implementiert ist. Zusätzlich zu der Beschreibung der Bedienung werden konkrete Problemstellungen aufgezeigt, die unter Zuhilfenahme kleiner Beispiele eine Lösung finden.

Weiterführende Themen

Der dritte Teil widmet sich schließlich weiterführenden Themen. Sie werden z. B. erfahren, wie Sie Ihre Projekte mit Eclipse in einem Team organisieren, mit Hilfe von zusätzlichen Plugins aufgabenfokussierte Entwicklung betreiben oder Debugging-Tools wie Valgrind in den Entwicklungsprozess einbeziehen.

Terminologie

Eclipse ist internationalisiert und kann so theoretisch in anderen Sprachen als Englisch betrieben werden. Allerdings wurde bisher nur für die Version 3.2 von Eclipse ein komplettes Sprachpaket durch IBM gesponsert, das für aktuelle Versionen nur beschränkte Gültigkeit hat. Aus diesem Grund wird hier mit der englischen Version des Programmpakets gearbeitet. Die im Buch verwendete Terminologie, z. B. bei der Beschreibung von Benutzeroberflächenelementen, ist deshalb ebenso an die englischen Fachausdrücke angelehnt, wenn dafür keine adäquate Übersetzung bekannt ist.

Webseite und Kontakt

Zum Buch existiert eine Webseite, die Sie unter

http://www.dpunkt.de/buecher/4680.html

abrufen können. Neben den Quelltexten und einer Errata-Liste sind dort alle im Buch aufgeführten Verweise auf Webressourcen verzeichnet. Zusätzlich finden Sie einen Katalog von Eclipse-Erweiterungen, die besonders C- oder C++-Programmierer interessieren könnten.

Haben Sie Fragen zum Buch, einen Fehler entdeckt, Vorschläge oder Kritiken? Dann können Sie mir unter [email protected] eine Nachricht zukommen lassen.

Inhaltsverzeichnis

I    Einstieg in Eclipse und CDT

1        Installation

1.1     C- und C++-Compiler

1.2     Das richtige Eclipse-Archiv finden

1.3     Installation unter Linux

1.3.1     Compiler und Tools

1.3.2     Java

1.3.3     Eclipse

1.4     Installation unter Windows

1.4.1     Compiler und Tools

1.4.2     Java

1.4.3     Eclipse

1.5     Die Eclipse.ini-Datei

1.6     Willkommen

1.7     Eclipse erweitern

1.7.1     CDT nachträglich installieren

1.7.2     Update-Sites

1.7.3     Features verwalten

1.7.4     Die CDT-Features im Detail

1.7.5     Eclipse Marketplace

1.7.6     p2

2        Erste Schritte

2.1     Konzepte des Eclipse-Frameworks

2.1.1     Workspace

2.1.2     Ressourcen

2.1.3     Eclipse-Workbench

2.1.4     Menüleiste

2.1.5     Werkzeugleiste

2.1.6     Statusleiste

2.1.7     Editoren und Views

2.1.8     Perspektiven

2.2     Das erste Projekt

2.2.1     Eclipse anpassen

2.2.2     Vorgehensweise

2.2.3     Ein neues Projekt anlegen

2.2.4     Die Quelldatei erzeugen

2.2.5     Übersetzen

2.2.6     Ausführen

2.2.7     Programmfehler aufspüren

2.2.8     Zusammenfassung und Ausblick

2.3     Das Eclipse-Hilfesystem

2.3.1     Dokumentationsaufbau

2.3.2     Hilfefenster

2.3.3     Kontextbezogene Hilfe

2.4     Eclipse über die Tastatur steuern

2.5     Nützliche Einstellungen

2.5.1     Voreinstellungsdialog

2.5.2     Hierarchie der Voreinstellungen

2.5.3     Allgemeine Workspace-Einstellungen

2.5.4     Workspace-Auswahl beim Starten und Beenden

2.5.5     Netzwerkeinstellungen

2.5.6     Einstellungen für SSH-Client

2.5.7     Passwortspeicher

2.5.8     Komponenten (de-)aktivieren

2.6     Die Benutzerschnittstelle anpassen

2.6.1     Werkzeug- und Menüleiste anpassen

2.6.2     Perspektiven verwalten

2.6.3     Tastatursteuerung anpassen

2.6.4     Erscheinungsbild

2.7     Verzeichnislayout auf dem Datenträger

2.7.1     Programmverzeichnis

2.7.2     Workspace

II Entwicklung mit CDT

3        Projekte erstellen und bearbeiten

3.1     Konzepte von CDT

3.1.1     Parser

3.1.2     Indexer

3.1.3     Piktogramme

3.1.4     Kurze Einführung in das Build-System

3.2     C- oder C++-Projekte erzeugen

3.2.1     Projekte anlegen

3.2.2     Dateien erzeugen

3.2.3     Verzeichnisse hinzufügen

3.2.4     Vorhandene Projekte importieren

3.2.5     Projekt entfernen

3.2.6     Projekttyp ändern

3.3     Eigenschaften von Ressourcen

3.4     Projekt: Dirscanner

3.4.1     Boost installieren

3.4.2     Dirscanner entwickeln

3.5     Quelltexte bearbeiten

3.5.1     Grundsätzlicher Aufbau eines Editorfeldes

3.5.2     Textpassagen markieren

3.5.3     Quelltext formatieren

3.5.4     Editierhilfen

3.5.5     Präsentation der Quelltexte

3.5.6     Annotationen

3.5.7     Code-Analyse

3.5.8     Navigation

3.5.9     Content-Assistenz

3.5.10    Makros untersuchen

3.5.11    Suchen und Ersetzen

3.5.12    Include-Direktiven organisieren

3.5.13    Setters und Getters erzeugen

3.5.14    Methode implementieren

3.5.15    Kommentare für externe Dokumentationswerkzeuge

3.5.16    Bookmarks

3.5.17    Makefile

3.5.18    Undo/Redo-Funktion

3.6     Dateienvergleich

3.6.1     Zwei Dateien vergleichen

3.6.2     Drei Dateien vergleichen

3.6.3     Lokale Historie

3.7     Working-Sets

3.7.1     Ein Working-Set erstellen

3.7.2     Working-Sets einschalten

3.7.3     Workbench-Working-Sets

3.8     Tasks

3.8.1     Tasks hinzufügen

3.8.2     Tasks mit Schlüsselwörtern

3.8.3     Tasks anzeigen lassen

3.9     Refactoring

3.9.1     Ressourcen umbenennen

3.9.2     Bezeichner umbenennen

3.9.3     Konstanten extrahieren

3.9.4     Lokale Variablen extrahieren

3.9.5     Eine Funktion oder Methode extrahieren

3.9.6     Funktionsdefinition umplatzieren

3.9.7     Methoden verstecken

3.9.8     Historie der Refactorings

3.10   Parser- und Indexerdetails

3.10.1   Parser

3.10.2   Indexeroptionen anpassen

3.10.3   Weitere Indexer-Parameter

3.10.4   Indexdatenbank analysieren

3.10.5   Probleme mit dem Indexer

3.11   Nützliche Views der C/C++-Perspektive

3.11.1   Outline

3.11.2   Include Browser

3.11.3   Call Hierarchy

3.11.4   Type Hierarchy

3.12   Navigations-Views

3.12.1   Navigator

3.12.2   C/C++ Project

3.12.3   Project Explorer

3.13   Ressourcen finden

3.14   Elemente finden

3.15   Suchen und Ersetzen

3.15.1   File Search

3.15.2   C/C++ Search

3.16   Eine Frage des Stils

3.16.1   Allgemeine Einstellungen

3.16.2   Quelltextformatierung

3.16.3   Quelltextschablonen

3.16.4   Namens- und Bezeichnerkonventionen

3.16.5   Include-Direktiven organisieren

3.17   Editorschablonen

3.18   Projektspezifische Metadateien

3.18.1   Metadateien im Projektverzeichnis

3.18.2   Metadateien im Workspace-Verzeichnis

4        Der Build-Prozess

4.1     Builder

4.1.1     Die vier Modi eines Builders

4.1.2     Builder-Assoziationen

4.1.3     Builder-Konfiguration

4.1.4     Zwei Builder für C/C++-Projekte

4.2     Build-Variablen

4.2.1     Eigenschaften von Build-Variablen

4.2.2     Build-Variablen benutzen

4.2.3     Gültigkeitsbereich von Build-Variablen

4.2.4     Workspace-weite Build-Variablen definieren

4.2.5     Umgebungsvariablen als Build-Variablen

4.2.6     Dynamische Build-Variablen

4.3     Kontrolle über Managed Build

4.3.1     Konfigurationen verwalten

4.3.2     Quellverzeichnisse

4.3.3     Dateien vom Build-Prozess ausschließen

4.3.4     Custom Build

4.4     Einstellungen für C/C++-Projekte

4.4.1     C/C++ Build

4.4.2     Paths and Symbols

4.4.3     Preprocessor Include Paths, Macros

4.4.4     Environment

4.4.5     Logging

4.4.6     Settings

4.4.7     Tool Chain Editor

4.4.8     Build Variables

4.5     Einstellungen für Ressourcen

4.5.1     Settings

4.5.2     Tool Chain Editor

4.5.3     Path and Symbols

4.5.4     Preprocessor Include Paths, Macros

4.6     Makefile-Projekte

4.6.1     Der Make Targets-View

4.6.2     Make Targets hinzufügen

4.6.3     Make Targets aufrufen

4.6.4     Make Targets entfernen

4.6.5     Besonderheiten

4.7     Compiler-Ausgaben

4.7.1     Console

4.7.2     Voreinstellungen zur Build-Konsole

4.7.3     Wie CDT Kommandoausgaben verarbeitet

4.7.4     Error Parser festlegen

4.7.5     Übersetzungsfehler finden

4.7.6     Fehler filtern

4.8     Code-Generatoren verwenden

4.8.1     Beispiel: mathematische Ausdrücke auswerten

4.8.2     Bison installieren

4.8.3     Projekt erstellen und Quelltexte einpflegen

4.8.4     Einstellungen anpassen

4.8.5     Projekt übersetzen und ausführen

4.8.6     Als Projekt mit Makefile

4.8.7     Fazit

4.9     Cross-Compiling

4.9.1     Cross-Compiling für Make-Projekte

4.9.2     Cross-Compiling für Managed Build

4.9.3     Beispiel: AmigaOS4

4.9.4     Cross-Compiling-Plugin

4.10   Remote Compiling

4.10.1   Das Programm ssh einrichten

4.10.2   Das Dateisystem einrichten

4.10.3   Ein Remote-Build-Kommando erstellen

4.10.4   Remote Compiling in Eclipse anwenden

4.11   Microsoft Visual C++ einbinden

4.11.1   Visual C++ installieren

4.11.2   Das Projekt einrichten

4.11.3   Den Build-Prozess anpassen

5        Ausführen und Debugging

5.1     Programmstartdialoge

5.1.1     Main

5.1.2     Arguments

5.1.3     Environment

5.1.4     Common

5.2     Doxygen einbinden

5.2.1     Konfigurationsdatei anlegen

5.2.2     Doxygen-Tool einrichten

5.2.3     Doxygen aufrufen

5.3     Die Launch-Konsole

5.4     Programme debuggen

5.4.1     Programme im Debug-Modus starten

5.4.2     Debug-Launcher

5.4.3     Debugger konfigurieren

5.4.4     Debug-Perspektive

5.4.5     Quelltexte lokalisieren

5.4.6     Der Debug-View

5.5     Den Programmablauf gezielt unterbrechen

5.5.1     Breakpoints-View

5.5.2     Zeilen-Breakpoints

5.5.3     Funktions-Breakpoints

5.5.4     Data-Breakpoints

5.5.5     Address-Breakpoints

5.5.6     Event-Breakpoints

5.5.7     Eigenschaften von Breakpoints

5.5.8     Dynamisches Printf

5.6     Nützliche Views beim Debuggen

5.6.1     Variables

5.6.2     Expressions

5.6.3     Register

5.6.4     Disassembly

5.6.5     Signale

5.6.6     Memory

5.6.7     Executables

5.6.8     OS Resources

5.7     Reverse Debugging

5.7.1     Reverse Debugging einschalten

5.7.2     Kontrollfluss steuern

5.7.3     Beispiel: Binäre Suche mit einem Vergleich

5.8     Unit Testing

5.8.1     Boost-Test-Library benutzen

5.8.2     Test starten

5.9     Auf entfernten Rechnern debuggen

5.10   Tracepoints

5.10.1   Tracepoints hinzufügen

5.10.2   Tracepoint-Aktionen

5.10.3   Traces auswerten

5.11   Launch Groups

III Weitere nützliche Plugins

6        Versionsverwaltung mit EGit

6.1     Grundlagen

6.1.1     Motivation

6.1.2     Begriffe

6.1.3     Konzepte von Git

6.2     EGit installieren

6.3     EGit konfigurieren

6.4     Die Perspektive Git

6.5     Bestehende Projekte mit Git assoziieren

6.6     Ein entferntes Repository klonen

6.7     Projekt in den Workspace importieren

6.8     Dekorationen

6.9     Mit Projekten unter Git arbeiten

6.10   Versionen vergleichen

6.11   Änderungsanzeige mit Git

6.12   Historie

6.13   Arbeiten mit Entwicklungszweigen

6.14   Rebase

6.15   Konflikte lösen

6.16   Stash

6.17   Weitere Informationen zu Git

7        Mylyn

7.1     Mylyn installieren

7.2     Einführendes Beispiel

7.3     Konzepte

7.4     Task Connectors

7.4.1     Bugzilla

7.4.2     SourceForge

7.4.3     GitHub

7.5     Weitere Konnektoren

8        Target Management

8.1     Target-Management-Plugin installieren

8.2     Konzepte

8.3     Die Perspektive Remote System Explorer

8.4     Der Remote Systems-View

8.5     Der Remote Monitor-View

8.6     Eine neue Verbindung anlegen

8.7     Die Verbindung aktivieren

8.8     Durch Ressourcen navigieren

8.9     Filter und Filterpools erzeugen

8.10   Profile verwalten

8.11   Ein Projekt auf den entfernten Rechner exportieren

8.12   Entfernte Projekte

8.13   DataStore

8.13.1   DataStore auf Linux einrichten

8.13.2   DataStore auf Windows einrichten

8.14   Den entfernten Rechner (fern-)steuern

8.14.1   Kommandos aufrufen

8.14.2   Terminals

8.15   Programme auf dem entfernten Rechner ausführen

8.15.1   Programme auf entfernten Rechnern starten

8.15.2   Beispiel: Cross-Development für Raspberry Pi

8.15.3   Projekt auf dem Pi über Eclipse debuggen

9        Autotools

9.1     Autotools-Plugin installieren

9.2     Autotools-Projekt erzeugen

9.3     Editoren für Autotools-Dateien

9.4     Autotools-Projekte übersetzen

9.5     Autotools manuell aufrufen

9.6     Globale Voreinstellungen

9.7     Projekteinstellungen

10      Linux-Tools

10.1   Linux-Tools installieren

10.2   Valgrind-Plugin

10.2.1   Hintergründe

10.2.2   Erste Schritte

10.3   Profiling-Kategorien

10.4   Andere Valgrind-Tools

10.4.1   Valgrind-Tools konfigurieren

10.4.2   Heap mit massif analysieren

10.4.3   Cache-Zugriffe mit cachegrind ermitteln

10.5   Profiling mit GProf

10.6   Docker Tooling

10.6.1   Verbindung zur Docker-Instanz einrichten

10.6.2   Docker-Images

10.6.3   Programm auf Docker-Container ausführen

10.7   Weitere Plugins

Anhang

Literaturverzeichnis

Glossar

Index

Teil I

Einstieg in Eclipse und CDT

1 Installation

Dieses Kapitel beschreibt die Installation der IDE. Da sich die Voraussetzungen je nach Art des Betriebssystems unterscheiden, wird nach einer zunächst allgemeinen Einführung in die von CDT unterstützten Compiler die Installation unter Linux und Windows in zwei getrennten Abschnitten behandelt. Falls Sie Eclipse bereits benutzen, beispielsweise für Java-Projekte, sind für Sie wahrscheinlich nur die Abschnitte 1.3.1 bzw. 1.4.1 und 1.7.1 von Interesse.

OS X

Sowohl Eclipse als auch CDT laufen auf weiteren Plattformen, auf die in diesem Buch jedoch nicht explizit eingegangen wird, hauptsächlich weil dem Autor eine solche Plattform nicht zur Verfügung stand. Zu diesen Plattformen zählt auch Mac OS X bzw. OS X, für das Eclipse ab Version 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- und C++-Compiler

Im Unterschied zu den Java Development Tools (JDT), die einen eigenen Java-Compiler integriert haben, bringt das CDT in der standardmäßigen Auslieferung keinen C/C++-Compiler mit sich. Vielmehr agiert CDT als Frontend für eine Reihe von Compilern. Dabei werden in der Version 8.7 von CDT die C/C++-Compiler der GNU Compiler Collection, ihre Windows-Portierung MinGW sowie optional, d. h. über weitere Zusatzpakete, Clang sowie IBM XL C/C++ unterstützt, auf die in diesem Buch aber nicht eingegangen wird. C-Dialekterweiterungen wie können Sie auf diese Weise gleichfalls benutzen. Wie Sie später sehen werden, ist es auch möglich, andere Übersetzungsprogramme wie z. B. einzubinden, wenngleich schon hier deutlich gemacht werden soll, dass diese Variante stark an Komfort zu wünschen übrig lässt, sofern die Anbindung nicht über ein Zusatzpaket realisiert ist. Für lag ein solches Zusatzpaket bei Drucklegung noch nicht vor.

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!