Eclipse und das CDT-Plugin zur Entwicklung in C/C++
Themen:
Installation Eclipse und CDT-Plugin
Installation MinGW (C/C++-Compiler und Umgebung) für Windows
Projekt erzeugen, Make aufrufen
Vorwort
Wenn Sie dieses Seite gefunden haben, interessieren Sie sich vermutlich
für das Tool Eclipse und für die Entwicklung von C/C++Code mit Eclipse und CDT.
Diese Seite bietet einen Einstieg in dieses Thema. Es beginnt mit der Eclipse-Installation und
geht bis hin zum Aufruf des GNU-C/C++-Compilers unter Eclipse. Das tolle Programm
in C/C++ müssen Sie dann aber noch selber schreiben :-)
Eclipse selber ist in Java geschrieben und daher benötigt man eine
Java-Runtime-Umgebung,
damit Eclipse auf dem PC läuft.
Es gibt verschiedene Möglichkeiten, Eclipse zu installieren. Der einfachste
Weg führt sicher über die Download-Seite von
http://www.eclipse.org/downloads/.
Dort finden Sie verschiedene Eclipse-Versionen für verschiedene Sprachen, z.B. für Java oder C/C++.
Diese Versionen sind schon mit den für die Zielsprache nötigen Plugins bestückt.
Aber - und meistens gibt es ein aber - es sind dort auch schon
einige andere Plugins installiert, die man nicht unbedingt benötigt. Ich
jedenfalls bevorzuge ein "leeres" Eclipse, in dem ich mir dann genau die Plugins
installieren kann, die ich auch wirklich benötige!
Hier also meine bevorzugte Installations-Methode:
Zuerst besorgen man sich eine "leere" Eclipse-Version, also ein Eclipse ohne
vorinstallierte Plugins. Erst die verschiedenen Plugins verleihen Eclipse ja
seine vielfältigen Möglichkeiten und bei einer Eclipse-Version ohne Plugins kann
man sich genau nur die gewünschten Plugins installieren. Eine Version von Eclipse
ohne Plugins findet man auf dieser Seite:
http://download.eclipse.org/eclipse/downloads/eclipse3x.php
Auf der Seite finden Sie im Abschnitt "Latest Releases" die aktuellen Eclipse-Versionen.
Jetzt, während ich den Text schreibe, ist die Version 3.7.1 aktuell. Klicken
Sie auf den Link der gewünschten Version, dadurch erreichen Sie die Download-Seite der Eclipse-Version.
Etwa in der Mitte der Seite gibt es einen Abschnitt "Platform Runtime Binary".
Genau in diesem Abschnitt befindet sich die "leere" Eclipse-Version. Die Windows-Version heißt z.B.
"eclipse-platform-3.7.1-win32.zip" und hat eine Größe von ca. 51 MB. Die für Ihr Betriebssystem
passend Version laden Sie nun einfach runter.
Wenn Sie die herunter geladene Eclipse-Version ausgepackt haben, können Sie das darin enthalten
eclipse.exe direkt starten. Beim Start fragt Eclipse nach einem Pfad, unter dem es dann
seinen Workspace ablegt. Der Workspace ist einfach ein Verzeichnis, in dem Eclipse
alle Einstellungen und projektspezifischen Files ablegt.
Sie können das "leere" Eclipse schon starten, aber bisher ist nur ein einfacher Texteditor
in Eclipse vorhanden. Da Sie ja C/C++ verwenden wollen, müssen Sie noch das geeignete Plugin
in Eclipse installieren.
Eclipse hat einen integrierten Installer, über den man
einfach Plugins installieren kann. Den Installer findet man im Menü
Help > Install New Software...
Im Install-Dialog muss man unter Punkt 1 den Download-Server aus einer Liste auswählen. Im Beispiel unten
ist das der Indigo-Server (Indigo ist der Name der Eclipse-Version 3.7).
Nun wird eine Liste aller Plugins, die dieser Server anbietet, geladen (das kann etwas dauern).
Aus dieser Liste wählen Sie nun unter "Programming Languages" das Plugin "C/C++ Development Tools" (Punkt 2) aus.
Dieses Plugin wird kurz auch einfach CDT genannt.
Hier der entsprechende Install-Dialog:
Jetzt noch zweimal Next anklicken, die Lizenz für das Plugin bestätigen und
schon beginnt der Download. Nach dem Download fordert Sie der Installer zum Neustart
von Eclipse auf. Nachdem Eclipse neu gestartet wurde, erscheint in Eclipse eine
Welcome-Seite, die Sie aber schließen können. Falls Sie wollen, können Sie diese Seite später
immer noch über das Help-Menü erneut aufrufen.
Das gerade installierte Plugin reicht aus, um mit Eclipse C/C++ Code zu editieren.
Natürlich können Sie auf die gerade beschriebene Art und Weise weitere Plugins installieren,
z.B. das Plugin "Eclipse XML Editors and Tools", um XML-Files
komfortabel bearbeiten zu können.
Plugins hängen sich an verschiedenen Stellen in die Eclipse-Oberfläche ein. Als
Beispiel sieht man im Folgenden den Preference-Dialog. Hier hat sich das gerade
installierte C/C++-Plugin auch eingehängt, um seine Konfigurationsoptionen anzubieten.
Den Dialog finden Sie unter Windows > Preferences:
Eclipse ist nun zwar eingerichtet, aber um C/C++ Code übersetzen zu können fehlt unter Windows
noch ein C/C++ Compiler. Im Folgenden soll es um den GNU-C/C++ Compiler in der MinGW Variante gehen.
MinGW, was für "Minimalist GNU for Windows" steht, ist eine Portierung der
GNU-Entwicklungstools auf die Windows-Plattform. Im Wesentlichen geht es um zwei
Pakete, einmal den GNU-C/C++ Compiler selber und um MSYS, welches eine Toolsammlung ist,
um eine Unix-artige Umgebung unter Windows bereit zu stellen.
Für MinGW gibt es einen einfachen Installer, der per Kommandozeile aufgerufen wird.
Der Installer ist zwar noch eine Alpha-Version, aber schon funktionsfähig.
Zuerst müssen Sie diesen MinGW-Installer von
Sourceforge
herunter laden. Zurzeit ist es die Version
"mingw-get-0.4-mingw32-alpha-1-bin.zip" für Windows.
Auf den MinGW-Seiten wird häufiger erwähnt, dass man MinGW in den
Ordner C:\MinGW installieren soll und auf jeden Fall Pfade mit Leerzeichen vermeiden soll.
Dieser Empfehlung werde ich daher folgen.
Falls noch nicht erfolgt, erzeugen Sie nun einen leeren Ordner "MinGW" auf Laufwerk C.
Das gerade herunter geladen Zipfile entpacken Sie nun in diesen Unterordner MinGW.
Nach dem Entpacken sollte also folgende Filestruktur entstanden sein:
C:\MinGW
├───bin
│ mingw-get.exe
│
├───libexec
│ └───...weitere Ordner
│
└───var
└───...weitere Ordner
Öffnen Sie jetzt eine "Eingabeaufforderung" bzw. "Kommandozeile" im Ordner
C:\MinGW\bin und starten Sie das Programm mingw-get.exe mit der folgenden Befehlszeile:
C:\MinGW\bin>mingw-get install msys-base mingw32-gdb mingw32-gcc mingw32-gcc-g++
Mit dieser Befehlszeile installieren Sie MSYS, den GNU-Debugger und den GNU-C und C++ Compiler in der
aktuellen Version (Ende 2011 war das Version 4.6.2).
Mingw-get lädt dazu alle benötigten Pakete von Sourceforge herunter und packt sie danach
auch gleich gebrauchsfertig in den Ordner C:\MinGW aus!
Falls Sie noch den älteren Compiler in der Version 3.x benötigen, verwenden Sie diese Befehlszeile:
C:\MinGW\bin>mingw-get install msys-base mingw32-gdb mingw32-gcc-v3-core mingw32-gcc-v3-g++
Nach der Installation durch mingw-get sollte etwa die folgende Filestruktur
entstanden sein (hier gekürzt wiedergegeben). Unter C:\MinGW\bin befindet sich der Compiler
und unter C:\MinGW\msys\1.0\bin liegt MSYS:
C:\MINGW
├───bin
├───doc
├───include
│ ├───ddk
│ ├───gdiplus
│ ├───GL
│ └───sys
├───lib
├───libexec
├───mingw32
├───msys
│ └───1.0
│ ├───bin
│ ├───etc
│ ├───postinstall
│ ├───sbin
│ └───share
├───share
└───var
Die aktuellen Eclipse- bzw CDT-Versionen sollten damit schon in der Lage sein, den Compiler aufrufen zu können,
da das CDT-Plugin selber nach dem Compiler unter den obigen Pfaden sucht und den gefundenen Compiler verwendet.
Falls Sie den Compiler aber auch von der Kommandozeile oder aus einem eigenen Makefile heraus
aufrufen wollen, müssen Sie noch in den Systemeigenschaften von Windows die Umgebungsvariable "PATH"
um den Pfad zum Bin-Verzeichnis für den Compiler und für MSYS erweitern.
Wenn Sie alles so wie oben beschrieben installiert haben, lautet der Pfad zum
Compiler und zu MSYS:
C:\MinGW\msys\1.0\bin;C:\MinGW\bin;
Man sollte den MinGW/MSYS-Pfad am Anfang der Umgebungsvariablen "PATH" einfügen, auch wenn das eventuell
gleichnamige Windows-Tools (z.B. find.exe) überdeckt. So werden auf jeden Fall die MSYS-Tools
von einem Makefile gefunden und verwendet.
Falls Sie die Umgebungsvariable "PATH" nicht generell unter Windows anpassen wollen,
können Sie auch die folgende Möglichkeit verwenden, um "PATH" nur temporär zu setzen. Dazu legen Sie
im Eclipse-Verzeichnis eine Batch-Datei an und über diese rufen Sie Eclipse dann auf.
In der Batch-Datei sollten die folgenden 2 Zeilen stehen und die Datei könnte z.B.
Eclipse+MinGW.cmd heißen:
PATH=C:\MinGW\msys\1.0\bin;C:\MinGW\bin;%PATH%
start eclipse.exe
Eclipse erbt dadurch die direkt vor dem Eclipse-Aufruf erweiterte
Umgebungsvariable "PATH" und kennt somit in seiner
Laufzeit-Umgebung den Pfad zum Compiler und zu MSYS.
Nachdem nun Eclipse, das CDT-Plugin, MinGW und MSYS installiert sind, ist es an der Zeit,
die ganze Installation auszuprobieren. Dazu starten Sie Eclipse neu und erzeugen beim
Eclipse-Start einen neuen, noch nicht benutzten Workspace für das folgende kleine
Experiment. Sie können den Workspace-Pfad direkt im Dialog "Select Workspace"
editieren:
Eclipse startet bei einem neuen Workspace immer mit dem "Welcome" Fenster. Das können
Sie aber erst mal schließen, denn Sie sollen jetzt ein kleines "HelloWorld"-Projekt anlegen,
um die Installation zu testen. Dazu rufen Sie über den Menüpunkt File > New > Project...
den folgenden Dialog auf und wählen dort "C Projekt" aus:
Nach dem Klick auf "Next" erscheint der folgende Dialog, dort geben Sie als Projektname
"test1" ein und wählen als Projekt-Type das "Hello World ANSI C Projekt" aus"!
Hinweis:
Sollten in diesem Dialog alle Projekt-Typen (bis auf eins) fehlen, hat Eclipse den Pfad
zum Compiler nicht gefunden! Dann prüfen Sie bitte nochmal sorgfältig alle oben angegebenen
Schritte.
Wenn Sie auf "Finish" klicken, legt der Wizard ein C-Projekt "test1" im Eclipse-Workspace
an und erzeugt dort auch gleich einen Ordner "src" mit einem File test1.c. Zuerst erscheint aber
noch die folgende Dialogbox:
Diese Abfrage bestätigen Sie mit "Yes", den die Umschaltung in die C/C++ Ansicht sollten Sie für
C/C++ Projekte verwenden. Hinter der "Perspektive" versteht man in Eclipse eine vorkonfigurierte
(oder auch selber erzeugte) Gruppierung aller Fenster, Menüs und Buttons der Eclipse-Oberfläche.
Mit Perspektiven kann man schnell die Einstellung der Eclipse-Oberfläche für verschiedene
Aufgaben (Kodierung - Debugging - etc.) umschalten. Mehr zum Thema "Perspective" finden Sie in der Eclipse Hilfe.
Nachdem Eclipse die Perspektive auf C/C++ umgeschaltet hat (sichtbar am aktiven Button unter Punkt 1 rechts oben im folgenden Bild), sollte das Testprojekt in der C/C++ Perspective etwa so aussehen:
Der Wizard hat also gleich das aus C bekannte "Hello World" als Sourcefile im Testprojekt angelegt.
Über den Button mit dem Hammer-Symbol (etwa in der Mitte der Toolleiste) können Sie das Projekt nun kompilieren.
Falls der Hammer nicht aktiv ist (grau) müssen Sie einmal in die C-Datei klicken. Ein Projekt muss den Fokus haben,
damit es übersetzt werden kann. Im unteren Fenster, in der Console, sehen Sie jetzt, ob der Build erfolgreich
gelaufen ist! Eventuell ist der Build auch schon automatisch gelaufen, da standardmäßig in Eclipse das Feature
"Build Automatically" eingeschaltet ist. Wenn Sie keinen automatischen Build-Aufruf wollen, können Sie das
im Menü Project ausschalten.
Im Project Explorer View (linke Seite im Bild unten) haben sich durch den Build zwei Dinge verändert.
Einmal hat der Build einen echten Ordner Debug angelegt und darin liegt auch das
erzeugte test1.exe. Weiterhin hat Eclipse einen "virtuellen Ordner" Binaries
angelegt, in dem das gleiche exe-File als verlinktes File für den schnellen Zugriff ebenfalls zur Verfügung steht.
Das gerade erzeugte Programm können Sie über den grünen Pfeil-Button in der Toolleiste
ausführen. Beim ersten Mal klicken Sie aber auf den kleinen "Ausklapp-Pfeil" neben
dem Button und wählen Run AS > Local C/C++ Application.
Eclipse merkt sich das zuletzt ausgewählte Programm und später können Sie es schneller über
den grüne Pfeil-Button direkt ausführen.
Unten im Consolen-Fenster erscheint nun die Ausgabe "!!!Hello World!!!" des kleinen C-Programmes.
Sie können das Programm auch unter Debugger-Kontrolle ausführen, dazu verwenden Sie
den Button mit dem grünen Käfer direkt links neben dem Run-Button. Eclipse will dazu die
die Debug-Perspektive öffnen, was Sie zulassen sollten, den in der Debug-Perspektive haben
Sie z.B. Zugriff auf Buttons, um den Programmablauf im Debugger zu kontrollieren.
Make-Type
Das Projekt, welches Sie gerade angelegt haben, ist ein sogenanntes "managed make"
Projekt. Für solche Projekte erzeugt Eclipse das Makefile selber und steuert damit
den ganzen Build-Vorgang. Wenn Sie ein neues Projekt erstellen und dabei bei der Auswahl des Projektypes (siehe Bild
weiter oben) ein Projekt unter Makefile project auswählen, erzeugt Eclipse kein
Makefile, sondern Sie müssen das Makefile (das einfach "makefile" heisst) selber schreiben,
haben dadurch aber die volle Kontrolle über den Build-Vorgang. Das CDT-Plugin ruft
für den Make-Vorgang das MSYS-make-Tool mit bestimmten Standard-Targets, wie z.B. all oder clean,
auf:
make clean
make all
usw.
Falls Sie einen ganz anderen Make-Aufruf brauchen, also nicht das übliche make
verwenden, können Sie auch die Aufruf-Kommandozeile in Eclipse über den Menüpunkt
Project > Properties > C/C++Build ändern, indem Sie im Dialog Use default
build command deaktivieren und dort Ihre eigene Make-Kommandos eingeben oder z.B. ein
Batch-File für den Build aufrufen.
Projektspezifische Einstellungen
Alle projektspezifischen Einstellungen erreichen Sie über das Menü Project > Properties.
Diese Einstellungen beziehen sich immer auf das aktive Projekt und betreffen z.B.
den Compiler, den Linker und den Build. Das folgende Bild zeigt als Beispiel einige
Einstellungsmöglichkeiten für den C-Compiler bei einem "managed make" Projekt:
Wahrscheinlich haben Sie auch die kleinen gelben Fragezeichen-Icons und die eine Fehlermeldung
in der Hello-World-Soure, die links am Rande des Editor-Fensters angezeigt werden.
Das liegt daran, dass Eclipse den Pfad, in dem die ganzen MinGW-Header liegen, nicht erkannt hat
und daher weder die Header-Files noch das Symbol EXIT_SUCCESS findet.
Sie können nun die Pfade, wie im nächsten Schritt beschrieben, selber hinzufügen, oder wie
in der Anmerkung 1 am Ende dieser Seite beschrieben, automatisch von Eclipse bzw.
dem CDT-Plugin suchen lassen.
Über die die projektspezifischen Einstellungen können Sie weitere Pfade zu externen Include-Files
hinzufügen, indem Sie den Pfad auf die Include-Files über den Add-Button für GNU C hinzufügen
(am besten im Add-Dialog auch noch "Add to all configurations" anklicken!):
Dadurch sollten nun die Fragezeichen und die Fehlermeldung
"Symbol 'EXIT_SUCCESS' could not be resolved" im Editor verschwunden sein!
Nachdem Sie (hoffentlich) Eclipse und MinGW erfolgreich in Betrieb genommen haben,
ist die erste Hürde überwunden. Für die weiteren Schritte mit Eclipse und der MinGW-Umgebung
kann ich nur diese allgemeine Empfehlung geben: Die Bedienung üben, Einstellungen ausprobieren
und die Eclipse-Hilfe studieren!
Doku, Hilfe, Informationen...
Es gibt viele Quellen im Internet, um weitere Informationen zu
Eclipse, CDT und MinGW zu finden. Einige möchte ich hier nennen:
Ein gute Quelle ist immer die in Eclipse integrierte Hilfe, zu finden
unter Help > Help Contents.
Die Seite www.eclipse.org
ist selbstverständlich ebenfalls ein
gute Quelle, z.B.
Wiki,
Forum,
CDT-Plugin,
usw.
Hier finden Sie Informationen zu
MinGW
und dem
GNU-Compiler.
[1]: Anmerkung zum Thema Include-Pfade:
Eigentlich erkennt das CDT-Plugin die Pfade zu allen Header-Files selber. Dazu verwendet
CDT das Feature "Discovery Scanner". Dieser Scanner durchsucht den Output des Compilers
nach Pfaden und verwendet diese Pfade dann automatisch. Diese Funktion
kann man unter Project > Properties > C/C++ Build > Discovery Options konfigurieren.
CDT ruft intern während eines Builds den GNU-Compiler mit einer speziellen Schalterkombination auf und scannt dann
den Compiler-Output, um die Pfade und Symbole heraus zu finden. Standardmässig ist diese Funktion eingeschaltet, nur
leider funktioniert dieser Parser nur dann richtig, wenn der Output des Compilers in englischer Sprache erfolgt. Und genau das ist unter einem deutschsprachigen Betriebssystem nicht der Fall, den auch der GNU-Compiler erkennt
die deutschsprachige Umgebung und gibt entsprechend deutschsprachige Meldungen aus. Das CDT-Plugin
kann den Compiler-Output nicht mehr erfolgreich parsen und findet die Pfade nicht!
Man kann den Compiler aber durch eine Umgebungsvariable dazu bringen, nur englische Meldungen auszugeben.
Diese Variable lautet LC_MESSAGES. Man kann diese auf den Wert en setzen oder gleich auf den Wert
C, denn dadurch wird die Übersetzung der Sprachausgabe des Compilers ganz ausgeschaltet und es wird
die Sprache Englisch verwendet. Es gibt viele Möglichkeiten, das zu erreichen. Eine Möglichkeit
ist, direkt in Eclipse in der projektspezifischen Konfiguration eine Umgebungsvariable anzulegen und so die
Sprache der Compiler-Ausgabe umzuschalten.
Dazu legen Sie unter Project > Properties > C/C++ Build > Environment eine Variable
LC_MESSAGES mit dem Wert C an. Sie können nun den vorhin (vielleicht) schon eingetragen Pfad
zu den Include-Headern wieder entfernen, den ab jetzt wird das CDT-Plugin die Pfade automatisch finden.
Nach dem nächsten Build sollte das CDT-Plugin alle Pfade und Symbole gefunden haben!
Sie können die vom Scanner gefunden Werte unter
Project > Properties > C/C++ General > Paths and Symbols überprüfen, die Pfade im
Reiter Includes und die Symbole im Reiter Symbols.
Falls Sie Kommentare oder Fragen haben schreiben Sie mir eine Email.
|