Eclipse 4.3 (Kepler) für die C/C++-Programmierung
On November 9, 2021 by adminEclipse ist eine quelloffene integrierte Entwicklungsumgebung (IDE), die von IBM unterstützt wird. Die Hauptseite ist @ www.eclipse.org. Eclipse ist beliebt für die Entwicklung von Java-Projekten. Es unterstützt auch die Entwicklung von C/C++, PHP, Python, Perl und anderen Webprojekten über erweiterbare Plug-ins. Eclipse ist plattformübergreifend und läuft unter Windows, Linux und Mac OS.
So installieren Sie Eclipse C/C++ Development Tool (CDT) 8.1.2 für Eclipse 4.2.2 (Juno)
Schritt 0: Installieren Sie MinGW GCC oder Cygwin GCC
Um Eclipse für die C/C++-Programmierung zu verwenden, benötigen Sie einen C/C++-Compiler. Unter Windows können Sie entweder MinGW GCC oder Cygwin GCC installieren. Wählen Sie MinGW, wenn Sie sich nicht sicher sind, denn MinGW ist leichter und einfacher zu installieren, hat aber weniger Funktionen.
- MinGW GCC: Lesen Sie „How to Install MinGW“.
- Cygwin GCC: Lesen Sie „So installieren Sie Cygwin“. Stellen Sie sicher, dass Sie die Pakete „
gcc
„, „g++
„, „gdb
“ und „make
“ unter der Kategorie „Devel
“ auswählen. (Entwicklung) auswählen – diese Pakete sind nicht Teil der Standardinstallation.
Schritt 1: Installieren Sie das Eclipse C/C++ Development Tool (CDT)
Es gibt zwei Möglichkeiten, CDT zu installieren, je nachdem, ob Sie zuvor ein Eclipse installiert haben:
- Wenn Sie bereits „Eclipse for Java Developers“ oder andere Eclipse-Pakete installiert haben, können Sie das CDT-Plug-in wie folgt installieren:
Start von Eclipse ⇒ Hilfe ⇒ Neue Software installieren ⇒ Im Feld „Work with“ das Dropdown-Menü herunterziehen und „Kepler – http://download.eclipse.org/releases/kepler“ auswählen. (oder juno für Eclipse 4.2; oder helios für Eclipse 3.7).
Im Feld „Name“ den Knoten „Programming Language“ aufklappen ⇒ „C/C++ Development Tools“ markieren ⇒ „Next“ ⇒ … ⇒ „Finish“. - Wenn Sie kein Eclipse-Paket installiert haben, können Sie „Eclipse IDE for C/C++ Developers“ von http://www.eclipse.org/downloads herunterladen und die heruntergeladene Datei in ein Verzeichnis Ihrer Wahl entpacken.
Schritt 2: Konfiguration
Sie müssen KEINE Konfiguration vornehmen, solange die Cygwin- oder MinGW-Binärdateien in der PATH
-Umgebungsvariablen enthalten sind. CDT durchsucht die PATH
, um die C/C++ Compiler zu finden.
Schreiben Sie Ihr erstes C/C++ Programm in Eclipse
C++ Programm
Schritt 0: Starten Sie Eclipse
- Starten Sie Eclipse, indem Sie „
eclipse.exe
“ im Eclipse-Installationsverzeichnis ausführen. - Wählen Sie ein geeignetes Verzeichnis für Ihren Arbeitsbereich (d.h.,
- Wählen Sie ein geeignetes Verzeichnis für Ihren Arbeitsbereich (d.h. wo Sie Ihre Arbeiten speichern möchten).
- Wenn der „Willkommens“-Bildschirm angezeigt wird, schließen Sie ihn, indem Sie auf die Schaltfläche „Schließen“ klicken.
Schritt 1: Erstellen eines neuen C++-Projekts
Für jede C++-Anwendung müssen Sie ein Projekt erstellen, um alle Quellcodes, Objektdateien, ausführbaren Dateien und relevanten Ressourcen zu speichern.
Um ein neues C++-Projekt zu erstellen:
- Wählen Sie das Menü „Datei“ ⇒ „Neu“ ⇒ Projekt… ⇒ C/C++ ⇒ C++ Projekt.
- Der Dialog „C++ Projekt“ öffnet sich.
- In das Feld „Projektname“ geben Sie „
FirstProject
“ ein. - In der Box „Projekttypen“ wählen Sie „Ausführbar“ ⇒ „Leeres Projekt“.
- In der Box „Toolchains“ wählen Sie Ihren Compiler, z.B., „Cygwin GCC“ oder „MinGW GCC“ ⇒ Weiter.
- In das Feld „Projektname“ geben Sie „
- Der Dialog „Konfigurationen auswählen“ erscheint. Wählen Sie sowohl „Debug“ als auch „Release“ ⇒ Fertigstellen.
Schritt 2: Schreiben eines Hello-world C++ Programms
- Im „Project Explorer“ (ganz links) ⇒ Rechtsklick auf „
FirstProject
“ (oder über das Menü „Datei“) ⇒ Neu ⇒ Quelldatei. - Der Dialog „Neue Quelldatei“ wird angezeigt.
- In das Feld „Quelldatei“ geben Sie „
Hello.cpp
“ ein. - Klicken Sie auf „Fertigstellen“.
- In das Feld „Quelldatei“ geben Sie „
- Die Quelldatei „
Hello.cpp
“ öffnet sich im Editorbereich (ggf. durch Doppelklick auf „test.cpp
“ öffnen). Geben Sie die folgenden Codes ein:#include <iostream>using namespace std; int main() { cout << "Hello, world!" << endl; return 0;}
Wenn „Unresolved Inclusion Error“
Wenn neben der Anweisung #include
der Fehler „unresolved inclusion“ erscheint, sind die „include paths for headers“ nicht richtig gesetzt. Wählen Sie das Menü „Projekt“ ⇒ Eigenschaften ⇒ C/C++ Allgemein ⇒ Pfade und Symbole ⇒ Im Reiter „Includes“:
Für Cygwin GCC:
- „Fügen“ Sie die folgenden Verzeichnisse zu „GNU C“ hinzu, wobei
$CYGWIN_HOME
Ihr Cygwin-Installationsverzeichnis ist:$CYGWIN_HOME\lib\gcc\i686-pc-cygwin.5.x\include
$CYGWIN_HOME\lib\gcc\i686-pc-cygwin.5.x\include-fixed
$CYGWIN_HOME\usr\include
$CYGWIN_HOME\usr\include\w32api
- „Füge“ die folgenden Verzeichnisse zu „GNU C++“ hinzu, wobei
$CYGWIN_HOME
dein Cygwin-Installationsverzeichnis ist:$CYGWIN_HOME\lib\gcc\i686-pc-cygwin.5.x\include\c++
$CYGWIN_HOME\lib\gcc\i686-pc-cygwin.5.x\include\c++\i686-pc-cygwin
$CYGWIN_HOME\lib\gcc\i686-pc-cygwin.5.x\include\c++\backward
$CYGWIN_HOME\lib\gcc\i686-pc-cygwin.5.x\include
$CYGWIN_HOME\lib\gcc\i686-pc-cygwin.5.x\include-fixed
$CYGWIN_HOME\usr\include
$CYGWIN_HOME\usr\include\w32api
Für MinGW GCC:
- „Fügen“ Sie die folgenden Verzeichnisse zu „GNU C“ hinzu, wobei
$MINGW_HOME
Ihr MinGW-Installationsverzeichnis ist:$MINGW_HOME\lib\gcc\mingw32.6.x\include
$MINGW_HOME\include
$MINGW_HOME\lib\gcc\mingw32.6.x\include-fixed
- „Add“ the following directories to „GNU C++“, where
$MINGW_HOME
is your Cygwin installed directory:$MINGW_HOME\lib\gcc\mingw32.6.x\include\c++
$MINGW_HOME\lib\gcc\mingw32.6.x\include\c++\mingw32
$MINGW_HOME\lib\gcc\mingw32.6.x\include\c++\backward
$MINGW_HOME\lib\gcc\mingw32.6.x\include
$MINGW_HOME\include
$MINGW_HOME\lib\gcc\mingw32.6.x\include-fixed
Hinweis: Um die Header-Pfade zu finden, können Sie eine Suche nach Headern wie „stdio.h
“ (für C) und „iostream
“ (für C++) unter dem Cygwin- oder MinGW-Installationsverzeichnis suchen.
libmpfr4
“ in Cygwin.Schritt 3: Compile/Build
Klicken Sie mit der rechten Maustaste auf das „FirstProject
“ (oder verwenden Sie das Menü „Projekt“) ⇒ wählen Sie „Projekt erstellen“, um das Programm zu kompilieren und zu linken.
Schritt 4: Ausführen
Um das Programm auszuführen, klicken Sie mit der rechten Maustaste auf „FirstProject
“ (oder irgendwo auf den Quellcode „test.cpp
„, oder wählen Sie das Menü „Ausführen“) ⇒ Ausführen als ⇒ Lokale C/C++-Anwendung ⇒ (Wenn Sie gefragt werden, wählen Sie den gdb-Debugger von Cygwin) ⇒ Die Ausgabe „Hallo, Welt!“ erscheint auf dem „Konsolen“-Feld.
HINWEIS: Sie müssen für JEDES Ihrer Programmierprobleme ein neues C++-Projekt erstellen. Das ist chaotisch beim Schreiben von Spielzeugprogrammen!
C-Programm
Befolgen Sie die gleichen Schritte wie oben. Erstellen Sie ein „C-Projekt“ (statt „C++-Projekt“). Probieren Sie das folgende „Hello-world“-Programm (mit dem Namen „Hello.c
„) aus.
#include <stdio.h> int main() { printf("Hello, world!\n"); return 0;}
C++-Programm mit Makefile
In den vorherigen Beispielen haben wir das sogenannte managed-make verwendet, bei dem Eclipse automatisch ein Makefile zum Erstellen des Programms generiert. Wir können aber auch unser eigenes Makefile schreiben, um die vollständige Kontrolle über den Erstellungsprozess zu haben.
Schritt 1: Erstellen eines C++ Makefile-Projekts
Aus dem Menü „Datei“ ⇒ Neu ⇒ Projekt… ⇒ C/C++ ⇒ C++ Projekt ⇒ In „Projektname“ „HelloCppMakefile
“ eingeben ⇒ Bei „Projekttyp“ wählen Sie „Makefile-Projekt“, „Leeres Projekt“ ⇒ Bei „Toolchains“ wählen Sie „Cygwin GCC“ oder „MinGW GCC“. Ignorieren Sie die Warnmeldung.
Schritt 2: Schreiben eines C++ Programms
Rechtsklick auf das Projekt ⇒ Neu ⇒ Quelldatei ⇒ In „Quelldatei“ geben Sie „Hello.cpp
“ ⇒ Geben Sie folgende Quellcodes ein:
#include <iostream>using namespace std; int main() {cout << "Hello, world!" << endl;return 0;}
Schritt 3: Schreiben eines Makefiles
Klicken Sie mit der rechten Maustaste auf das Projekt ⇒ Neu ⇒ Datei ⇒ Geben Sie unter „Dateiname“ „makefile
“ ein. ⇒ Geben Sie die folgenden Codes ein. Beachten Sie, dass Sie einen Tabulator (KEIN Leerzeichen) für den Einzug verwenden müssen.
all: Hello.exe clean:rm Hello.o Hello.exe Hello.exe: Hello.og++ -g -o Hello.exe Hello.o Hello.o: Hello.cppg++ -c -g Hello.cpp
Schritt 4: Erstellen Sie das Projekt
Klicken Sie mit der rechten Maustaste auf das Projekt ⇒ Projekt erstellen.
Schritt 5: Führen Sie das Programm aus
Klicken Sie mit der rechten Maustaste auf das Projekt ⇒ Ausführen als ⇒ Lokale C/C++ Anwendung.
Schreiben Sie ein Makefile, um Spielzeugprogramme unter einem Projekt zu kompilieren.
Lesen Sie die Dokumentation
Sie SOLLTEN zumindest das „Workbench User Guide“ und das „C/C++ Development User Guide“ von Eclipse durchlesen – zugänglich über die „Welcome“-Seite oder das „Help“-Menü von Eclipse. Dies wird Ihnen viele qualvolle Stunden ersparen, in denen Sie versuchen, herauszufinden, wie Sie einige Dinge später tun können.
Debugging von C/C++-Programmen in Eclipse CDT
Die Möglichkeit, einen Grafik-Debugger zum Debuggen von Programmen zu verwenden, ist beim Programmieren entscheidend. Es könnte Ihnen unzählige Stunden ersparen, zu raten, was schief gelaufen ist.
Schritt 0: Schreiben Sie ein C++-Programm – Das folgende Programm berechnet und druckt die Fakultät von n
(=1*2*3*...*n
). Das Programm hat jedoch einen logischen Fehler und liefert eine falsche Antwort für n
=20
(„The Factorial of 20 is -2102132736
“ – eine negative Zahl?!).
1234567891011121314 |
#include <iostream>using namespace std; int main() { int n = 20; int factorial = 1; // n! = 1*2*3...*n for (int i = 1; i <= n; i++) { factorial *= i; } cout << "The Factorial of " << n << " is " << factorial << endl; return 0;} |
The Factorial of 20 is -2102132736
Lassen Sie uns den grafischen Debugger verwenden, um das Programm zu debuggen.
Schritt 1: Setzen eines ersten Haltepunkts – Ein Haltepunkt unterbricht die Programmausführung, damit Sie die internen Zustände (z.B., Wert von Variablen) des Programms zu untersuchen. Bevor Sie den Debugger starten, müssen Sie mindestens einen Haltepunkt setzen, um die Ausführung innerhalb des Programms zu unterbrechen. Setzen Sie einen Haltepunkt bei der Funktion main()
, indem Sie auf den linken Rand der Zeile doppelklicken, die main()
enthält. Ein blauer Kreis erscheint am linken Rand und zeigt an, dass in dieser Zeile ein Haltepunkt gesetzt ist.
Schritt 2: Debugger starten – Rechtsklick auf das Projekt (oder über das Menü „Ausführen“) ⇒ „Debuggen als“ ⇒ „Lokale C/C++-Anwendung“ ⇒ „Ja“ wählen, um in die „Debug“-Perspektive zu wechseln (eine Perspektive ist eine bestimmte Anordnung von Panels, die für eine bestimmte Entwicklungsaufgabe wie Editieren oder Debuggen geeignet ist). Das Programm beginnt mit der Ausführung, hält aber am Haltepunkt, d.h. der main()
Funktion, an.
Wie in der folgenden Abbildung dargestellt, zeigt die hervorgehobene Zeile (auf die auch ein blauer Pfeil zeigt) die Anweisung an, die im nächsten Schritt ausgeführt werden soll.
Schritt 3: Überspringen und Beobachten der Variablen und Ausgaben – Klicken Sie auf die Schaltfläche „Überspringen“ (oder wählen Sie „Überspringen“ aus dem Menü „Ausführen“), um Ihr Programm in Einzelschritten durchzugehen. Überprüfen Sie bei jedem Schritt den Wert der Variablen (im Feld „Variable“) und die von Ihrem Programm erzeugten Ausgaben (im Feld „Konsole“), falls vorhanden. Sie können auch Ihren Cursor auf eine beliebige Variable setzen, um den Inhalt der Variable zu untersuchen.
Das Programm in Einzelschritten zu durchlaufen und die Werte der internen Variablen und die erzeugten Ausgaben zu beobachten, ist das ultimative Mittel zur Fehlersuche in Programmen – denn es ist genau so, wie der Computer Ihr Programm ausführt!
Schritt 4: Haltepunkt, Run-To-Line, Resume und Terminate – Wie bereits erwähnt, unterbricht ein Haltepunkt die Programmausführung und ermöglicht es Ihnen, den internen Zustand des Programms zu untersuchen. Um einen Haltepunkt auf eine bestimmte Anweisung zu setzen, doppelklicken Sie auf den linken Rand dieser Zeile (oder wählen Sie „Haltepunkt umschalten“ aus dem Menü „Ausführen“).
„Fortsetzen“ setzt die Programmausführung fort, bis zum nächsten Haltepunkt oder bis zum Ende des Programms.
„Einzelschritt“ durch eine Schleife mit einer großen Anzahl ist zeitraubend. Sie können einen Haltepunkt an der Anweisung unmittelbar außerhalb der Schleife setzen (z.B. Zeile 12 des obigen Programms) und „Resume“ eingeben, um die Schleife zu beenden.
Alternativ können Sie den Cursor auf eine bestimmte Anweisung setzen und „Run-To-Line“ aus dem „Run“-Menü eingeben, um die Ausführung bis zu dieser Zeile fortzusetzen.
„Terminate“ beendet die Debugging-Sitzung. Beenden Sie die aktuelle Debugging-Sitzung immer mit „Terminate“ oder „Resume“ bis zum Ende des Programms.
Schritt 5: Zurück zur C/C++-Perspektive wechseln – Klicken Sie auf das Symbol für die „C/C++“-Perspektive in der oberen rechten Ecke, um zur weiteren Programmierung in die „C/C++“-Perspektive zu wechseln (oder Menü „Fenster“ ⇒ Perspektive öffnen ⇒ C/C++).
Ich kann nicht genug betonen, dass die Beherrschung des Debuggers für die Programmierung entscheidend ist. Erforschen Sie die von den Debuggern zur Verfügung gestellten Funktionen.
Weitere Funktionen des Debuggers
Ändern Sie den Wert einer Variablen: Sie können den Wert einer Variablen ändern, indem Sie einen neuen Wert in das Feld „Variable“ eingeben. Dies ist praktisch, um das Verhalten eines Programms vorübergehend zu ändern, ohne den Quellcode zu verändern.
Step-Into und Step-Return: Um eine Funktion zu debuggen, müssen Sie „Step-Into“ verwenden, um in die erste Anweisung der Methode einzusteigen. Mit „Step-Return“ können Sie an einer beliebigen Stelle innerhalb der Methode zum Aufrufer zurückkehren. Alternativ können Sie auch einen Haltepunkt innerhalb einer Methode setzen.
HINWEIS: Wenn Sie während des Debuggens die Fehlermeldung „Can’t find a source file at /cygdrive/c
…“ erhalten, müssen Sie eine Zuordnung zwischen „/cygdrive/c
“ und „c:/
“ konfigurieren (unter der Annahme, dass Ihr Programm im Laufwerk c gespeichert ist. ⇒ „Debug“ ⇒ „Common Source Lookup Path“, wählen Sie „Add“ ⇒ „Path Mapping“.
Tipps & Tricks
Lesen Sie die Tipps & Tricks von Eclipse for Java für allgemeine Tipps zur Verwendung von Eclipse.
C/C++ Softwareentwicklung mit GCC
- Die Befehle, die in Eclipse CDT für die Erstellung des Projekts verwendet werden, finden Sie unter „
<workspace>\.metadata\.plugins\org.eclipse.cdt.ui\global-build.log
„. - Einstellen von Include-Pfaden, Library-Pfaden und Bibliotheken: Beim Erstellen des Programms benötigt der Compiler die Header-Dateien, um die Quellcodes zu kompilieren; der Linker benötigt die Bibliotheken, um externe Referenzen aufzulösen. Der Compiler sucht in den „include-paths“ nach den in
#include
-Direktiven angegebenen Headern. Der Linker sucht in den „library-paths“ nach „Bibliotheken“, die zum Linken des Programms benötigt werden. Im GCC wird der „include-path“ über die Option-Idir
oder die UmgebungsvariableCPATH
angegeben. Der library-path wird über die Option-Ldir
oder die UmgebungsvariableLIBRARY_PATH
angegeben. Die Bibliotheklibxxx.a
wird über die Option-lxxx
(Kleinbuchstabe'l'
, ohne Präfixlib
und.a
-Erweiterung) angegeben.
In Eclipse CDT können Sie die Include-Pfade, Bibliothekspfade und Bibliotheken durch Rechtsklick auf das Projekt ⇒ Eigenschaften ⇒ C/C++ Allgemein ⇒ Pfade und Symbole ⇒ unter den Reitern „Includes“, „Bibliothekspfade“ und „Bibliotheken“ einstellen. Die Einstellungen gelten nur für das ausgewählte Projekt.
Um die Include- und Bibliothekspfade für alle Projekte zu setzen, setzen Sie die UmgebungsvariablenCPATH
undLIBRARY_PATH
. In Eclipse wählen Sie „Window“ ⇒ Preferences ⇒ C/C++ ⇒ Build ⇒ Environment.
Alternativ kopieren Sie die Header und Bibliotheken in Systemverzeichnisse, und Sie können die Include-Pfade und Library-Pfade weglassen. - OpenGL mit GLUT: Für Cygwin müssen Sie gcc, g++, gdb, make (unter der Kategorie Devel) und opengl, freeglut (unter der Kategorie graphics) installieren. Die Header
gl.h
,glu.h
,glut.h
sind in$cygwin\usr\include\w32api\GL
enthalten. Verwenden Sie#include <GL/gl__.h>
, um die Header einzubinden. Die Bibliothekenlibopengl32.a
libglu32.a
undlibglut32.a
befinden sich in$cygwin\lib\w32api
. Um diese Bibliotheken beim Linken anzugeben, verwenden Sie die Optionen-lopengl32
-lglu32
-lglut32
(ohne das Präfixlib
und die Erweiterung.a
). - OpenGL mit SDL: Laden Sie SDL von http://www.libsdl.org herunter. Wählen Sie Development Libraries ⇒ win32 ⇒ mingw32 ⇒ Unzip. Kopieren Sie das Header-Verzeichnis
SDL
(unterinclude
) nach$cygwin\usr\include\w32api
; kopieren Sie alle Bibliotheksdateien inlib
nach$cygwin\lib\w32api
; kopieren Sie die LaufzeitbibliothekSDL.dll
(unterbin
) nachWindows/System32
. Fügen Sie diese beiden Header in Ihr Programm ein:#include <SDL/sdl.h>
und#include <SDL/sdl_opengl.h>
. Zum Linken fügen Sie diese Bibliotheken hinzu:-lSDL
-lSDLmain
. - #pragma-Kommentar-Direktive: Die pragma-Kommentar-Direktive, z. B.
#pragma comment(lib, "opengl32.lib")
, wird oft verwendet, um eine bestimmte Bibliothek einzubinden (wie die Option-l
). Diese systemabhängige Direktive funktioniert im Windows-Compiler, aber NICHT im GCC. - Fehler „multiple target patterns“: Es gibt ein Problem mit GNU make (bei
$Cygwin\bin\make.exe
). Ersetzt durch diese Kopie @ http://www.cmake.org/files/cygwin/make.exe. - fflush(stdout): Die gcc-Bibliothek verwendet gepufferte E/A (in Übereinstimmung mit der C-Spezifikation). Die Ausgabe wird erst nach einem Zeilenumbruch in den Ausgabestrom geschrieben. Sie können die Ausgabe mit einem
fflush()
. - Der Projektname darf das Wort „setup“ nicht enthalten: Wenn Sie Ihr C/C++-Projekt mit einem Namen benennen, der das Wort „
setup
“ enthält, dann wird das daraus resultierende „*setup*.exe
“ die UAC (User Authorization Control) auslösen und Administratorrechte zur Ausführung erfordern. (Es hat mich einige Stunden gekostet, das herauszufinden! Versuchen Sie, ein „hello.exe
“ in „mysetup.exe
“ umzubenennen.)
File I/O in Eclipse
Reference to Eclipse for Java’s File IO.
Schreibe einen Kommentar