Eclipse 4.3 (Kepler) voor C/C++ programmeren
On november 9, 2021 by adminEclipse is een open-source Integrated Development Environment (IDE) ondersteund door IBM. De moeder site is @ www.eclipse.org. Eclipse is populair voor de ontwikkeling van Java-projecten. Het ondersteunt ook C/C++, PHP, Python, Perl, en andere web project ontwikkelingen via uitbreidbare plug-ins. Eclipse is cross-platform en draait onder Windows, Linux en Mac OS.
Hoe installeer je Eclipse C/C++ Development Tool (CDT) 8.1.2 voor Eclipse 4.2.2 (Juno)
Stap 0: Installeer MinGW GCC of Cygwin GCC
Om Eclipse voor C/C++ programmering te gebruiken, heb je een C/C++ compiler nodig. Op Windows, kunt u of MinGW GCC of Cygwin GCC installeren. Kies MinGW als je niet zeker bent, omdat MinGW lichter en gemakkelijker te installeren is, maar minder mogelijkheden heeft.
- MinGW GCC: Lees “Hoe MinGW te installeren”.
- Cygwin GCC: Lees “Hoe Cygwin te installeren”. Zorg ervoor dat u “
gcc
“, “g++
“, “gdb
“, en “make
” pakketten selecteert onder de “Devel
” (Development) categorie – deze pakketten maken geen deel uit van de standaardinstallatie.
Stap 1: Installeer Eclipse C/C++ Development Tool (CDT)
Twee manieren om CDT te installeren, afhankelijk van of u al eerder een Eclipse hebt geïnstalleerd:
- Als u “Eclipse for Java Developers” of andere Eclipse-pakketten al hebt geïnstalleerd, zou u de CDT-plug-in als volgt kunnen installeren:
Lanceer Eclipse ⇒ Help ⇒ Install New Software ⇒ In het veld “Work with” trekt u het drop-downmenu naar beneden en selecteert u “Kepler – http://download.eclipse.org/releases/kepler” (of juno voor Eclipse 4.2; of helios voor Eclipse 3.7).
In “Name” box, expand “Programming Language” node ⇒ Check “C/C++ Development Tools” ⇒ “Next” ⇒ … ⇒ “Finish”. - Als u geen Eclipse-pakket hebt geïnstalleerd, kunt u “Eclipse IDE for C/C++ Developers” downloaden van http://www.eclipse.org/downloads, en het gedownloade bestand uitpakken in een directory naar keuze.
Stap 2: Configuratie
U hoeft GEEN configuratie uit te voeren, zolang de Cygwin of MinGW binaries zijn opgenomen in de PATH
omgevingsvariabele. CDT doorzoekt de PATH
om de C/C++ compilers te ontdekken.
Het schrijven van uw eerste C/C++ programma in Eclipse
C++ programma
Stap 0: Start Eclipse
- Start Eclipse door “
eclipse.exe
” in de geïnstalleerde directory van Eclipse uit te voeren. - Kies een geschikte directory voor uw werkruimte (d.w.z, waar u uw werk wilt opslaan).
- Als het “welkom” scherm verschijnt, sluit het door op de “close” knop te klikken.
Stap 1: Maak een nieuw C++ Project
Voor elke C++ applicatie, moet u een project maken om alle broncodes, object bestanden, uitvoerbare bestanden, en relevante bronnen te bewaren.
Om een nieuw C++ project te maken:
- Kies “File” menu ⇒ “New” ⇒ Project… ⇒ C/C++ ⇒ C++ project.
- Het “C++ Project” dialoogvenster verschijnt.
- In “Project name” veld, voer “
FirstProject
“. - In “Project Types” box, selecteer “Executable” ⇒ “Empty Project”.
- In “Toolchains” box, kies uw compiler, bijv, “Cygwin GCC” of “MinGW GCC” ⇒ Next.
- In “Project name” veld, voer “
- Het dialoogvenster “Select Configurations” verschijnt. Selecteer zowel “Debug” als “Release” ⇒ Finish.
Step 2: Schrijf een Hello-world C++ Program
- In de “Project Explorer” (meest linkse paneel) ⇒ Klik met de rechter muisknop op “
FirstProject
” (of gebruik het “File” menu) ⇒ New ⇒ Source File. - Het “New Source File” dialoogvenster verschijnt.
- In het veld “Bronbestand” voert u “
Hello.cpp
” in. - Klik op “Voltooien”.
- In het veld “Bronbestand” voert u “
- Het bronbestand “
Hello.cpp
” wordt geopend op het editor paneel (dubbelklik op “test.cpp
” om te openen indien nodig). Voer de volgende codes in:#include <iostream>using namespace std; int main() { cout << "Hello, world!" << endl; return 0;}
Als “Unresolved Inclusion Error”
Als de fout “unresolved inclusion” verschijnt naast #include
statement, zijn de “include paths for headers” niet goed ingesteld. Selecteer “Project” menu ⇒ Properties ⇒ C/C++ General ⇒ Paths and Symbols ⇒ In “Includes” tab:
Voor Cygwin GCC:
- “Voeg” de volgende directories toe aan “GNU C”, waar
$CYGWIN_HOME
uw Cygwin geïnstalleerde directory is:$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
- “Voeg” de volgende directories toe aan “GNU C++”, waar
$CYGWIN_HOME
de directory is die op Cygwin is geïnstalleerd:$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
Voor MinGW GCC:
- “Voeg” de volgende directories toe aan “GNU C”, waarbij
$MINGW_HOME
uw MinGW installatiedirectory is:$MINGW_HOME\lib\gcc\mingw32.6.x\include
-
$MINGW_HOME\include
-
$MINGW_HOME\lib\gcc\mingw32.6.x\include-fixed
- “Voeg” de volgende directories toe aan “GNU C++”, waar
$MINGW_HOME
de directory is die op Cygwin is geïnstalleerd:$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
NOTE: Om de header paden te vinden, kunt u een zoekopdracht doen op headers zoals “stdio.h
” (voor C) en “iostream
” (voor C++) onder de Cygwin of MinGW geïnstalleerde directory.
libmpfr4
” in cygwin.Stap 3: Compile/Build
Rechter-klik op de “FirstProject
” (of gebruik het “Project” menu) ⇒ kies “Build Project” om het programma te compileren en te linken.
Step 4: Run
Om het programma uit te voeren, klik met de rechtermuisknop op de “FirstProject
” (of waar dan ook op de bron “test.cpp
“, of selecteer het “Run” menu) ⇒ Run As ⇒ Local C/C++ Application ⇒ (Indien gevraagd, kies Cygwin’s gdb debugger) ⇒ De uitvoer “Hello, world!” verschijnt op het “Console” paneel.
NOTE: U moet een nieuw C++ project maken voor ELK van uw programmeerproblemen. Dit is rommelig voor het schrijven van speelgoed programma’s!
C Programma
Volg dezelfde stappen als hierboven. Maak een “C Project” (in plaats van een “C++ Project”). Probeer het volgende Hello-world programma (genaamd “Hello.c
“).
#include <stdio.h> int main() { printf("Hello, world!\n"); return 0;}
C++ Programma met Makefile
In de vorige voorbeelden gebruiken we zogenaamde managed-make waarbij Eclipse automatisch een makefile genereert om het programma te bouwen. We kunnen er ook voor kiezen om onze eigen makefile te schrijven voor volledige controle over het bouwproces.
Stap 1: Maak een C++ Makefile Project
Vanuit het “File” menu ⇒ New ⇒ Project… ⇒ C/C++ ⇒ C++ project ⇒ In “Project name”, voer “HelloCppMakefile
” in ⇒ In “Project type”, kies “Makefile Project “, “Empty Project” ⇒ In “Toolchains”, kies “Cygwin GCC” of “MinGW GCC”. Negeer de waarschuwing.
Stap 2: Schrijf een C++ programma
Rechter muisklik op het project ⇒ Nieuw ⇒ Bronbestand ⇒ In “Bronbestand”, voer “Hello.cpp
” in. ⇒ Voer de volgende broncodes in:
#include <iostream>using namespace std; int main() {cout << "Hello, world!" << endl;return 0;}
Stap 3: Schrijf een Makefile
Rechter muisklik op het project ⇒ Nieuw ⇒ Bestand ⇒ Voer in “Bestandsnaam”, “makefile
” in. ⇒ Voer de volgende codes in. Let op dat u een Tab (GEEN Spaties) gebruikt voor het inspringen.
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
Stap 4: Bouw het project
Rechter muisklik op het project ⇒ Bouw project.
Stap 5: Voer het programma uit
Rechter muisklik op het project ⇒ Voer uit als ⇒ Lokale C/C++ toepassing.
Schrijf een makefile om speelgoedprogramma’s onder één project te compileren.
Lees de documentatie
U ZOU op zijn minst de “Workbench User Guide” en de “C/C++ Development User Guide” van Eclipse MOETEN doorbladeren – toegankelijk via de “Welcome” pagina of het “Help” menu van Eclipse. Dit zal je vele kwellende uren besparen om uit te zoeken hoe je sommige dingen later moet doen.
Debuggen van C/C++ programma’s in Eclipse CDT
Het kunnen gebruiken van een grafische debugger om programma’s te debuggen is cruciaal in programmeren. Het kan je ontelbare uren besparen met gissen naar wat er fout ging.
Stap 0: Schrijf een C++ Programma – Het volgende programma berekent en print de factoriaal van n
(=1*2*3*...*n
). Het programma heeft echter een logische fout en geeft een verkeerd antwoord voor n
=20
(“The Factorial of 20 is -2102132736
” – een negatief getal?!).
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
Laten we de grafische debugger gebruiken om het programma te debuggen.
Stap 1: Stel een initieel onderbrekingspunt in – Een onderbrekingspunt onderbreekt de programma-uitvoering, zodat u de interne toestanden (b.v, waarde van variabelen) van het programma. Voordat u de debugger start, moet u ten minste één onderbrekingspunt instellen om de uitvoering binnen het programma te onderbreken. Stel een breekpunt in bij functie main()
door te dubbelklikken op de linker-margin van de regel die main()
bevat. Er verschijnt een blauwe cirkel in de linkermarge om aan te geven dat op die regel een breekpunt is ingesteld.
Stap 2: Debugger starten – Klik met de rechtermuisknop op het project (of gebruik het menu “Uitvoeren”) ⇒ “Debug als” ⇒ “Lokale C/C++ toepassing” ⇒ kies “Ja” om over te schakelen naar het “Debug”-perspectief (Een perspectief is een bepaalde rangschikking van panelen die past bij een bepaalde ontwikkelingstaak, zoals bewerken of debuggen). Het programma begint met de uitvoering, maar onderbreekt de werking bij het breekpunt, d.w.z. de main()
-functie.
Zoals in het volgende diagram wordt geïllustreerd, geeft de gemarkeerde regel (ook aangegeven door een blauwe pijl) het statement aan dat in de volgende stap moet worden uitgevoerd.
Stap 3: Step-Over en bekijk de variabelen en outputs – Klik op de knop “Step Over” (of selecteer “Step Over” in het menu “Run”) om in één stap door uw programma te gaan. Bekijk bij elke stap de waarde van de variabelen (in het paneel “Variabelen”) en de outputs van uw programma (in het paneel “Console”), indien aanwezig. U kunt ook uw cursor op een variabele plaatsen om de inhoud van de variabele te inspecteren.
Single-stepping door het programma en het bekijken van de waarden van interne variabelen en de geproduceerde outputs is het ultieme middel in het debuggen van programma’s – omdat het precies is hoe de computer uw programma uitvoert!
Stap 4: Breakpoint, Run-To-Line, Hervatten en Beëindigen – Zoals vermeld, onderbreekt een breakpoint de programma-uitvoering en laat u de interne toestanden van het programma onderzoeken. Om een onderbrekingspunt in te stellen op een bepaald statement, dubbelklikt u op de linkermarge van die regel (of selecteert u “Toggle Breakpoint” in het menu “Run”).
“Resume” zet de programma-uitvoering voort, tot het volgende onderbrekingspunt, of tot het einde van het programma.
“Single-step” door een lus met een grote telling is tijdrovend. U kunt een onderbrekingspunt instellen op het statement direct buiten de lus (b.v., Lijn 12 van het bovenstaande programma), en “Resume” uitgeven om de lus te voltooien.
Als alternatief kunt u de cursor op een bepaald statement plaatsen, en “Run-To-Line” uitgeven vanuit het “Run” menu om de uitvoering tot aan de regel voort te zetten.
“Terminate” beëindigt de debug-sessie. Beëindig altijd uw huidige debug-sessie met “Terminate” of “Resume” tot het einde van het programma.
Stap 5: Terugschakelen naar C/C++ perspectief – Klik op het “C/C++” perspectief icoon in de rechter bovenhoek om terug te schakelen naar het “C/C++” perspectief voor verder programmeren (of “Venster” menu ⇒ Open Perspectief ⇒ C/C++).
Ik kan niet meer benadrukken dat het beheersen van het gebruik van de debugger van cruciaal belang is bij het programmeren. Verken de mogelijkheden van de debuggers.
Andere functies van de debugger
Wijzig de waarde van een variabele: U kunt de waarde van een variabele wijzigen door een nieuwe waarde in te voeren in het paneel “Variabele”. Dit is handig om tijdelijk het gedrag van een programma aan te passen, zonder de broncode te veranderen.
Step-Into en Step-Return: Om een functie te debuggen, moet je “Step-Into” gebruiken om in het eerste statement van de methode te stappen. Je kunt “Step-Return” gebruiken om terug te keren naar de aanroeper, waar dan ook in de methode. Als alternatief kunt u een breekpunt binnen een methode instellen.
NOTE: Als u tijdens het debuggen de foutmelding “Can’t find a source file at /cygdrive/c
…” krijgt, moet u een mapping configureren tussen “/cygdrive/c
” en “c:/
” (ervan uitgaande dat uw programma in station c wordt bewaard. ⇒ “Debug” ⇒ “Common Source Lookup Path”, selecteer “Add” ⇒ “Path Mapping”.
Tips & Tricks
Lees Eclipse voor Java’s Tips & Tricks voor algemene tips bij het gebruik van Eclipse.
C/C++ Software Ontwikkeling met behulp van GCC
- U kunt de commando’s vinden die in Eclipse CDT worden gebruikt voor het bouwen van het project bij “
<workspace>\.metadata\.plugins\org.eclipse.cdt.ui\global-build.log
“. - Het instellen van include-paths, library-paths, en libraries: Bij het bouwen van het programma heeft de compiler de header-bestanden nodig om de broncodes te compileren; de linker heeft de bibliotheken nodig om externe verwijzingen op te lossen. De compiler zoekt in de “include-paths” naar de headers die in
#include
directives zijn gespecificeerd. De linker zoekt in de “library-paths” naar de “libraries” die nodig zijn om het programma te linken. In GCC wordt het include-pad gespecificeerd via de-Idir
optie of omgevingsvariabeleCPATH
. Het bibliotheek-pad wordt opgegeven via de optie-Ldir
, of omgevingsvariabeleLIBRARY_PATH
. De librarylibxxx.a
wordt gespecificeerd via-lxxx
optie (kleine letter'l'
, zonder het voorvoegsellib
en.a
extensie).
In Eclipse CDT, kunt u de include-paden, library-paden en bibliotheken instellen door rechts te klikken op het project ⇒ Properties ⇒ C/C++ General ⇒ Paths and Symbols ⇒ Onder tabs “Includes”, “Library Paths” en “Libraries”. De instellingen zijn alleen van toepassing op het geselecteerde project.
Om de include paden en bibliotheek paden voor alle projecten in te stellen, stel de omgevingsvariabelenCPATH
enLIBRARY_PATH
in. In Eclipse, kies “Window” ⇒ Preferences ⇒ C/C++ ⇒ Build ⇒ Environment.
Alternatief, kopieer de headers en libraries naar systeem directories, en u kunt de include-paths en library-paths weglaten. - OpenGL met GLUT: Voor Cygwin, moet je gcc, g++, gdb, make (onder Devel categorie) en opengl, freeglut (onder graphics categorie) installeren. De headers
gl.h
,glu.h
,glut.h
worden bewaard in$cygwin\usr\include\w32api\GL
. Gebruik#include <GL/gl__.h>
om de headers op te nemen. De bibliothekenlibopengl32.a
libglu32.a
enlibglut32.a
worden bewaard in$cygwin\lib\w32api
. Om deze bibliotheken te specificeren bij het linken, gebruikt u-lopengl32
-lglu32
-lglut32
opties (zonder delib
prefix en.a
extensie). - OpenGL met SDL: Download SDL van http://www.libsdl.org. Kies Development Libraries ⇒ win32 ⇒ mingw32 ⇒ Unzip. Kopieer de headers directory
SDL
(onderinclude
) naar$cygwin\usr\include\w32api
; kopieer alle bibliotheek bestanden inlib
naar$cygwin\lib\w32api
; kopieer de run-time librarySDL.dll
(onderbin
) naarWindows/System32
. Voeg in uw programma de volgende twee headers toe:#include <SDL/sdl.h>
en#include <SDL/sdl_opengl.h>
. Voor het linken, voeg deze bibliotheken toe:-lSDL
-lSDLmain
. - #pragma Comment Directive: pragma comment directive, bijvoorbeeld
#pragma comment(lib, "opengl32.lib")
, wordt vaak gebruikt om een bepaalde bibliotheek op te nemen (hetzelfde als-l
optie). Deze systeem-afhankelijke directive werkt onder Windows’s compiler, maar NIET in GCC. - Fout “multiple target patterns”: Er is een probleem met GNU make (bij
$Cygwin\bin\make.exe
). Vervangen door deze kopie @ http://www.cmake.org/files/cygwin/make.exe. - fflush(stdout): De gcc bibliotheek gebruikt gebufferde I/O (in overeenstemming met de C Specificatie). Uitvoer wordt alleen weggeschreven naar de uitvoer stream na een newline karakter. U kunt de uitvoer doorspoelen met een
fflush()
. - Projectnaam mag niet het woord “setup” bevatten: Als u uw C/C++ project een naam geeft die het woord “
setup
” bevat, dan zal het resulterende “*setup*.exe
” UAC (User Authorization Control) triggeren en administrator recht vereisen om te kunnen draaien. (Dit kostte me een paar uur om uit te vinden! Probeer een “hello.exe
” te hernoemen naar “mysetup.exe
“.)
File I/O in Eclipse
Refereer naar Eclipse voor Java’s File IO.
Geef een antwoord