Bild einer Blume

Eclipse und C/C++

Eclipse of the Sun...

Software
Opera-Tool
Mbox merge
Mbox Import
Benfords Law

Eclipse
Eclipse und C/C++
Eclipse-Schnipsel

Office
Excel Balkengrafik
Excel Farben

Artikel
Computer rechnen anders!
Impressum

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 die Eclipse-IDE 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. Zur Verwendung von Eclipse und CDT reicht es aus, das JRE (Java Runtime Enironment) zu installieren.


Installation Eclipse und CDT-Plugin

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 findet man 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 vielleicht 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 besorgt 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 dann genau die gewünschten Plugins installieren. Eine Version von Eclipse ohne Plugins findet man auf diesen Seiten:

Zwischenbemerkung:
Von Eclipse gibt es zwei Entwicklungslinien, V3.x und V4.x. Mit Eclipse Juno (erschienen im Juni 2012) hat man die Juno-Version 4.2 als die neue Haupt-Entwicklungslinie erklärt und die Juno Version 3.8 wird vermutlich die letzte Version der 3.x Entwicklungslinie bleiben. Das bedeutet aber noch nicht, das man nun sofort auf die 4.2 Version wechseln muss, denn die Plugins laufen in beiden Versionen. Und meiner Meinung nach ist die 3.8 Version immer noch die etwas stabilere Version.

Welche Version Sie auch wählen, die folgenden Schritte funktionieren in beiden Versionen:
Eclipse V3.x
Eclipse V4.x
Auf obigen Seiten findet man im Abschnitt "Latest Releases" die aktuellen Eclipse-Versionen. 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.2-win32.zip" und hat eine Größe von ca. 52 MB. Die für Ihr Betriebssystem passend Version laden Sie nun herunter.

Wenn Sie die herunter geladene Eclipse-Version ausgepackt haben, können Sie das darin enthalten eclipse.exe schon 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. Da Sie aber ja C/C++ verwenden wollen, müssen Sie nun 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:

Eclipse 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 Preferences Dialog


Installation MinGW (C/C++-Compiler incl. MSYS) für Windows

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 liegt inzwischen als Beta-Version vor. Zuerst müssen Sie diesen MinGW-Installer von Sourceforge herunter laden. Zurzeit ist es die Version "mingw-get-0.5-mingw32-beta-20120426-1-bin.zip" für Windows.
Inzwischen gibt es auch einen einfachen grafischen Installer, der intern auch den Kommandozeilen-Installer aufruft, aber weniger Optionen bietet.

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 sind damit schon in der Lage, den Compiler aufzurufen, 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.


Projekt erzeugen, Make aufrufen

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 Workspace Dialog


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:

Eclipse New Project Dialog


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"!

Eclipse New Project Dialog

Hinweis:

Eclipse erkennt automatisch die installierte Entwicklungsumgebung (hier MinGW) und füllt die Liste mit den passenden "Project types" auf. Sollten in diesem Dialog alle Projekt-Typen (bis auf "Empty Project") fehlen, hat Eclipse den Pfad zum Compiler nicht gefunden! Dann prüfen Sie bitte nochmal sorgfältig alle oben angegebenen Installations-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:

Eclipse Perspective Dialog


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 somit 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:

Eclipse C/C++ Perspective


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.

Eclipse C/C++ Perspective


Eclipse Run As

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.

Es erscheint keine Ausgabe im Consolen-Fenster?
Wenn Sie das Beispiel mit C++ ausgeführt haben und Sie keine "Hello World" Ausgabe im Consolen-Fenster erhalten, dann lesen Sie bitte unten auf dieser Seite die Anmerkung 2.

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 Debug-Perspektive öffnen, was Sie zulassen sollten, denn 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 selber 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:

Eclipse C/C++ Properties


Eclipse C/C++ Properties

Vielleicht 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!):

Eclipse C/C++ Properties


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. Diese Hilfe gibt es auch Online für Eclipse und für alle möglichen Plugins.

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 zu "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.
Nachtrag:
Ab Eclipse Juno ist die oben beschriebene "Discovery Options" Konfig-Seite "deprecated" und sollte daher nicht mehr für neue C/C++-Projekte verwendet werden. Sie wird ersetzt durch eine andere Konfigurationsseite, die Sie unter Project > Properties > C/C++ General > Preprocessor Include Paths, Macros finden.


[2]: Anmerkung zu "Keine Consolen-Ausgabe mit C++":
Das mit MinGW erzeugte C++-Programm verwendet eine DLL (libgcc_s_dw2-1.dll, liegt unter C:\MinGW\bin) und es findet diese nicht, wenn man die Umgebungsvariable PATH nicht entsprechend gesetzt hat. Dann erscheint keine Ausgabe des Programms in der Console, aber leider auch keine Fehlermeldung in Eclipse. Startet man das kompilierte Programm von der Kommandozeile, erhält man eine entsprechende Fehlermeldung. Es gibt viele Möglichkeiten, dieses Problem zu lösen, zum Beispiel:

PATH (wie oben beschrieben) um MinGW-Pfade erweitern oder Eclipse per Batch starten.
Die DLL ins Projekt kopieren oder in ein Verzeichnis, welches über PATH gefunden werden kann.
Die DLL statisch zum Programm hinzu linken, das macht aber natürlich das Programm entsprechend größer. Dazu muss man in den Project-Properties beim Linker die Schalter "-static-libgcc -static-libstdc++" hinzufügen. Mehr zu den Schaltern hier.

Mailadresse als Bild (wegen Spam leider nötig...)
Falls Sie Kommentare oder Fragen haben schreiben Sie mir eine Email.

Top     Home
Valid XHTML 1.0!