Eclipse 4.3 (Kepler) C/C++ programozáshoz
On november 9, 2021 by adminAz Eclipse egy nyílt forráskódú integrált fejlesztőkörnyezet (IDE), amelyet az IBM támogat. Az anyaoldal @ www.eclipse.org. Az Eclipse népszerű a Java projektek fejlesztéséhez. A C/C++, PHP, Python, Perl és egyéb webes projektfejlesztéseket is támogatja bővíthető bővítményeken keresztül. Az Eclipse keresztplatformos, és Windows, Linux és Mac OS alatt is fut.
How to Install Eclipse C/C++ Development Tool (CDT) 8.1.2 for Eclipse 4.2.2 (Juno)
Step 0: Install MinGW GCC or Cygwin GCC
Az Eclipse C/C++ programozásra való használatához szükség van egy C/C++ fordítóra. Windowson telepítheti a MinGW GCC-t vagy a Cygwin GCC-t. Válassza a MinGW-t, ha nem biztos benne, mert a MinGW könnyebb és könnyebben telepíthető, de kevesebb funkcióval rendelkezik.
- MinGW GCC:
- Cygwin GCC: Olvassa el a “Hogyan kell telepíteni a Cygwint” című részt. Győződjön meg róla, hogy a “
gcc
“, “g++
“, “gdb
” és “make
” csomagokat választja ki a “Devel
” (Fejlesztés) kategóriában – ezek a csomagok nem részei az alapértelmezett telepítésnek.
1. lépés: Az Eclipse C/C++ Development Tool (CDT) telepítése
A CDT telepítésének két módja van, attól függően, hogy korábban telepített-e már Eclipse-et:
- Ha már telepítette az “Eclipse for Java Developers” vagy más Eclipse csomagot, akkor a CDT plug-in-t a következőképpen telepítheti:
Eclipse elindítása ⇒ Súgó ⇒ Új szoftver telepítése ⇒ A “Work with” mezőben húzza le a legördülő menüt, és válassza ki a “Kepler – http://download.eclipse.org/releases/kepler” (vagy juno az Eclipse 4.2 esetén; vagy helios az Eclipse 3.7 esetén).
A “Name” mezőben bontsa ki a “Programming Language” csomópontot ⇒ Jelölje be a “C/C++ Development Tools” ⇒ “Next” ⇒ … ⇒ “Befejezés”. - Ha nem telepített semmilyen Eclipse csomagot, akkor letöltheti az “Eclipse IDE for C/C++ Developers” című programot a http://www.eclipse.org/downloads címről, és a letöltött fájlt kicsomagolja egy tetszőleges könyvtárba.
2. lépés: Konfiguráció
Nem kell semmilyen konfigurációt elvégeznie, amennyiben a Cygwin vagy MinGW binárisok szerepelnek a PATH
környezeti változóban. A CDT a PATH
-ban keresi a C/C++ fordítóprogramokat.
Az első C/C++ program írása az Eclipse-ben
C++ program
Szint 0: Az Eclipse elindítása
- Az Eclipse indítása a “
eclipse.exe
” futtatásával az Eclipse telepített könyvtárában. - Válasszon egy megfelelő könyvtárat a munkaterületének (pl., ahová a munkáit menteni szeretné).
- Ha megjelenik az “üdvözlő” képernyő, zárja be a “bezárás” gombra kattintva.
1. lépés: Új C++ projekt létrehozása
Minden C++ alkalmazáshoz létre kell hoznia egy projektet, amelyben az összes forráskódot, objektumfájlt, futtatható fájlt és a vonatkozó erőforrásokat tárolja.
Új C++ projekt létrehozásához:
- Válassza a “Fájl” menü ⇒ “Új” ⇒ Projekt… ⇒ C/C++ ⇒ C++ projekt.
- Megjelenik a “C++ projekt” párbeszédpanel.
- A “Projekt neve” mezőbe írja be a “
FirstProject
“. - A “Projekt típusok” mezőben válassza ki a “Végrehajtható” ⇒ “Üres projekt”.
- Az “Eszköztárak” mezőben válassza ki a fordítóprogramot, pl.:, “Cygwin GCC” vagy “MinGW GCC” ⇒ Következő.
- A “Projekt neve” mezőbe írja be a “
- Megjelenik a “Konfigurációk kiválasztása” párbeszédpanel. Válassza ki a “Debug” és a “Release” opciót is ⇒ Befejezés.
2. lépés: Hello-world C++ program írása
- A “Project Explorer”-ben (bal oldali panel) ⇒ Kattintson a jobb gombbal a “
FirstProject
“-re. (vagy használja a “Fájl” menüt) ⇒ Új ⇒ Forrásfájl. - A “Új forrásfájl” párbeszédpanel jelenik meg.
- A “Source file” mezőbe írja be a “
Hello.cpp
“-t. - Kattintson a “Finish”-re.
- A “Source file” mezőbe írja be a “
- A “
Hello.cpp
” forrásfájl megnyílik a szerkesztőpanelen (szükség esetén a “test.cpp
“-re való dupla kattintással nyissa meg). Írja be a következő kódokat:#include <iostream>using namespace std; int main() { cout << "Hello, world!" << endl; return 0;}
Ha “Unresolved Inclusion Error”
Ha a #include
utasítás mellett megjelenik a “unresolved inclusion” hiba, a “include paths for headers” nem megfelelően van beállítva. Válassza a “Project” menü ⇒ Properties ⇒ C/C++ General ⇒ Paths and Symbols ⇒ In “Includes” tab:
For Cygwin GCC:
- “Add” the following directories to “GNU C”, where
$CYGWIN_HOME
is your Cygwin installed directory:$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
- “Add” the following directories to “GNU C++”, where
$CYGWIN_HOME
is your Cygwin installed directory:$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
A MinGW GCC esetében:
A MinGW GCC:
- “Add” the following directories to “GNU C”, where
$MINGW_HOME
is your MinGW installed directory:$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
MEGJEGYZÉS: A fejlécek elérési útvonalainak megtalálásához keresést végezhet a “stdio.h
” típusú fejlécekre. (a C esetében) és a “iostream
” (C++ esetén) a Cygwin vagy a MinGW telepített könyvtárában.
libmpfr4
“-t a cygwinben.3. lépés: Compile/Build
Jobb gombbal kattintson a “FirstProject
” (vagy használja a “Project” menüt) ⇒ válassza a “Build Project” lehetőséget a program lefordításához és összekapcsolásához.
4. lépés: Futtatás
A program futtatásához kattintson a jobb gombbal a “FirstProject
” (vagy bárhol a forráson “test.cpp
“, vagy válassza a “Run” menüt) ⇒ Run As ⇒ Local C/C++ Application ⇒ (Ha kérdezi, válassza a Cygwin gdb debuggerét) ⇒ A “Console” panelen megjelenik a “Hello, world!” kimenet.
MEGJEGYZÉS: Minden programozási problémához egy új C++ projektet kell létrehoznia. Ez a játékprogramok írásához rendetlen!
C program
Kövesse a fenti lépéseket. Hozzon létre egy “C projektet” (a “C++ projekt” helyett). Próbálja ki a következő Hello-world programot (neve “Hello.c
“).
#include <stdio.h> int main() { printf("Hello, world!\n"); return 0;}
C++ program Makefile-val
A korábbi példákban úgynevezett managed-make-et használtunk, ahol az Eclipse automatikusan generált egy makefile-t a program építéséhez. Választhatjuk azt is, hogy saját makefile-t írunk, így teljes mértékben kontrollálhatjuk az építési folyamatot.
1. lépés: C++ Makefile projekt létrehozása
A “Fájl” menüből ⇒ Új ⇒ Projekt… ⇒ C/C++ ⇒ C++ projekt ⇒ A “Projekt neve” mezőbe írjuk be a “HelloCppMakefile
“-t. ⇒ A “Project type” menüpontban válassza a “Makefile Project “, “Empty Project” ⇒ Az “Toolchains” menüpontban válassza a “Cygwin GCC” vagy a “MinGW GCC” lehetőséget. A figyelmeztető üzenetet hagyja figyelmen kívül.
2. lépés: C++ program írása
Jobb egérgombbal kattintson a projektre ⇒ Új ⇒ Forrásfájl ⇒ “Forrásfájl” menüpontba írja be a “Hello.cpp
“-t. ⇒ Írja be a következő forráskódokat:
#include <iostream>using namespace std; int main() {cout << "Hello, world!" << endl;return 0;}
3. lépés: Makefile írása
Jobb egérgombbal kattintson a projektre ⇒ Új ⇒ Fájl ⇒ “Fájlnév” mezőbe írja be a “makefile
“-t. ⇒ Adja meg a következő kódokat. Vegye figyelembe, hogy a behúzáshoz tabulátor (NEM szóköz) használata szükséges.
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
4. lépés: A projekt építése
Jobb egérgombbal kattintson a projektre ⇒ Build Project.
5. lépés: A program futtatása
Jobb egérgombbal kattintson a projektre ⇒ Run As ⇒ Local C/C++ Application.
Írjon egy makefile-t a játékprogramok egy projekt alá történő lefordításához.
Olvassa el a dokumentációt
Minimum az Eclipse “Workbench User Guide” és “C/C++ Development User Guide” című – az Eclipse “Welcome” oldalán vagy a “Help” menüben elérhető – dokumentumokat KELL átböngésznie. Ezzel sok gyötrelmes órát spórolhat meg, amikor később próbálja kitalálni, hogyan kell bizonyos dolgokat csinálni.
C/C++ programok hibakeresése az Eclipse CDT-ben
A programozásban kulcsfontosságú, hogy grafikus hibakeresőt tudjon használni a program hibakeresésére. Számtalan órát spórolhat meg azzal, hogy kitalálja, mi ment rosszul.
Szint 0: C++ program írása – Az alábbi program kiszámítja és kiírja a n
(=1*2*3*...*n
) faktoriálisát. A programban azonban logikai hiba van, és rossz választ ad a n
=20
(“The Factorial of 20 is -2102132736
” – negatív szám?!).
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
A program hibakereséséhez használjuk a grafikus hibakereső programot.
1. lépés: Kezdeti töréspont beállítása – A töréspont felfüggeszti a program végrehajtását, hogy megvizsgálhassuk a belső állapotokat (pl, változók értékét) a programban. A hibakereső elindítása előtt legalább egy töréspontot kell beállítania a programon belüli végrehajtás felfüggesztéséhez. Állítson be egy töréspontot a main()
függvénynél a main()
-t tartalmazó sor bal szélén dupla kattintással. Egy kék kör jelenik meg a bal margón, jelezve, hogy megállási pont van beállítva az adott sorban.
2. lépés: A Debugger elindítása – Jobb klikk a projektre (vagy használja a “Futtatás” menüt) ⇒ “Debug As” ⇒ “Local C/C++ Application” ⇒ válassza az “Igen” lehetőséget a “Debug” perspektívába való váltáshoz (A perspektíva a panelek egy adott elrendezése, amely megfelel egy bizonyos fejlesztési feladatnak, mint például a szerkesztés vagy a hibakeresés). A program megkezdi a végrehajtást, de a töréspontnál, azaz a main()
függvénynél felfüggeszti a működését.
Az alábbi ábrán látható módon a kiemelt vonal (amelyre egy kék nyíl is mutat) jelzi a következő lépésben végrehajtandó utasítást.
3. lépés: Lépésről lépésre és a változók és kimenetek figyelése – Kattintson a “Lépésről lépésre” gombra (vagy válassza a “Futtatás” menüből a “Lépésről lépésre” lehetőséget), hogy egy lépésben végigmenjen a programon. Minden egyes lépésnél vizsgálja meg a változók értékét (a “Variable” panelen) és a programja által előállított kimeneteket (a “Console” panelen), ha vannak ilyenek. A kurzort bármelyik változóra helyezheti, hogy megvizsgálja a változó tartalmát.
A program egy lépésben történő végigjárása és a belső változók értékeinek és a kimeneteknek a megfigyelése a programok hibakeresésének végső eszköze – mivel a számítógép pontosan így futtatja a programját!
4. lépés: Töréspont, sorba futás, folytatás és befejezés – Mint említettük, a töréspont felfüggeszti a program végrehajtását, és lehetővé teszi a program belső állapotainak vizsgálatát. Ha megszakítási pontot szeretnénk beállítani egy adott utasításon, kattintsunk duplán az adott sor bal szélén (vagy válasszuk a “Megszakítási pont kapcsolása” opciót a “Futtatás” menüből).
A “Folytatás” folytatja a program végrehajtását a következő megszakítási pontig, vagy a program végéig.
A “Egy lépés” egy nagyszámú cikluson keresztül időigényes. A közvetlenül a cikluson kívüli utasításnál (pl. a fenti program 12. sora) megszakítási pontot állíthatunk be, és a “Folytatás” parancsot adhatjuk ki a ciklus befejezéséhez.
Egy másik lehetőség, hogy a kurzort egy adott utasításra helyezzük, és a “Futtatás” menüből a “Futtatás a sorig” parancsot adjuk ki a végrehajtás folytatásához az adott sorig.
A “Befejezés” parancs befejezi a hibakeresési munkamenetet. Az aktuális hibakeresési munkamenetet mindig a “Terminate” vagy a “Resume” segítségével fejezze be a program végéig.
5. lépés: Visszakapcsolás a C/C++ perspektívába – Kattintson a jobb felső sarokban található “C/C++” perspektíva ikonra, hogy a további programozáshoz visszakapcsoljon a “C/C++” perspektívába (vagy “Ablak” menü ⇒ Perspektíva megnyitása ⇒ C/C++).
Nem tudom jobban hangsúlyozni, hogy a debugger használatának elsajátítása kulcsfontosságú a programozásban. Fedezze fel a debuggerek által biztosított funkciókat.
A debugger egyéb funkciói
Változó értékének módosítása: Módosíthatja egy változó értékét egy új érték megadásával a “Variable” panelen. Ez praktikus a program viselkedésének ideiglenes módosítására, a forráskód megváltoztatása nélkül.
Step-Into és Step-Return: Egy függvény hibakereséséhez a “Step-Into” segítségével a módszer első utasításába kell lépni. A “Step-Return”-t használhatja a hívóhoz való visszatéréshez, bárhol a metóduson belül. Alternatív megoldásként beállíthat egy megállási pontot a metóduson belül.
MEGJEGYZÉS: Ha hibakeresés közben a “Nem találja a forrásfájlt a /cygdrive/c
címen…” hibaüzenetet kapja, akkor be kell állítania a “/cygdrive/c
” és a “c:/
” közötti leképezést (feltételezve, hogy a programját a c meghajtóban tartja. Az “Ablak” ⇒ “Beállítások” ⇒ “C/C++” ⇒ “Debug” ⇒ “Common Source Lookup Path”, válassza a “Add” ⇒ “Path Mapping” lehetőséget.
Tippek & Trükkök
Az Eclipse for Java tippjei & Trükkök az Eclipse használatával kapcsolatos általános tippekért.
C/C++ szoftverfejlesztés a GCC használatával
- A projekt építéséhez használt parancsokat az Eclipse CDT-ben a “
<workspace>\.metadata\.plugins\org.eclipse.cdt.ui\global-build.log
” címen találja. - include-paths, library-paths és libraries beállítása: A program építése során a fordítónak szüksége van a fejlécfájlokra a forráskódok lefordításához; a linkelőnek szüksége van a könyvtárakra a külső hivatkozások feloldásához. A fordító a
#include
direktívákban megadott fejléceket az “include-paths”-ekben keresi meg. A linkelő a “library-paths”-ben keresi a program linkeléséhez szükséges “könyvtárakat”. A GCC-ben az include-path a-Idir
opcióval vagy aCPATH
környezeti változóval adható meg. A library-path a-Ldir
opcióval, vagy aLIBRARY_PATH
környezeti változóval adható meg. A könyvtárlibxxx.a
a-lxxx
opcióval ('l'
kisbetű,lib
előtag és.a
kiterjesztés nélkül) adható meg.
Az Eclipse CDT-ben az include-útvonalakat, a könyvtár-útvonalakat és a könyvtárakat a projektre jobb gombbal kattintva adhatjuk meg ⇒ Tulajdonságok ⇒ C/C++ Általános ⇒ Útvonalak és szimbólumok ⇒ “Includes”, “Library Paths” és “Libraries” lapok alatt. A beállítások csak a kiválasztott projektre vonatkoznak.
Az include elérési utak és a könyvtárak elérési útvonalainak beállításához az összes projektre vonatkozóan állítsa be aCPATH
ésLIBRARY_PATH
környezeti változókat. Az Eclipse-ben válassza az “Ablak” ⇒ Beállítások ⇒ C/C++ ⇒ Építés ⇒ Környezet.
Alternatívaként másolja a fejléceket és a könyvtárakat a rendszer könyvtáraiba, és elhagyhatja az include-ösvényeket és a könyvtár-ösvényeket. - OpenGL with GLUT: Cygwin esetén telepíteni kell a gcc, g++, gdb, make (a Devel kategóriában) és az opengl, freeglut (a graphics kategóriában). A
gl.h
,glu.h
,glut.h
fejléceket a$cygwin\usr\include\w32api\GL
-ben kell tartani. Használja a#include <GL/gl__.h>
-t a fejlécek felvételéhez. Alibopengl32.a
libglu32.a
éslibglut32.a
könyvtárakat a$cygwin\lib\w32api
-ban tartjuk. Ezen könyvtárak megadásához a linkelés során használja a-lopengl32
-lglu32
-lglut32
opciókat (alib
előtag és a.a
kiterjesztés nélkül). - OpenGL SDL-lel: Az SDL letöltése a http://www.libsdl.org-ból. Válassza a Development Libraries ⇒ win32 ⇒ mingw32 ⇒ Unzip. Másolja a
SDL
fejléc könyvtárat (include
alatt) a$cygwin\usr\include\w32api
könyvtárba; alib
könyvtárfájlokat másolja a$cygwin\lib\w32api
könyvtárba; aSDL.dll
futásidejű könyvtárat (bin
alatt) másolja aWindows/System32
könyvtárba. A programodba építsd be ezt a két fejlécet:#include <SDL/sdl.h>
és#include <SDL/sdl_opengl.h>
. A linkeléshez add hozzá ezeket a könyvtárakat:-lSDL
-lSDLmain
. - #pragma Comment direktíva: A pragma comment direktívát, pl.
#pragma comment(lib, "opengl32.lib")
, gyakran használják egy adott könyvtár bevonására (ugyanúgy, mint a-l
opciót). Ez a rendszerfüggő direktíva a Windows fordítóban működik, de a GCC-ben NEM. - Hiba “multiple target patterns”: Probléma van a GNU make-vel (a
$Cygwin\bin\make.exe
-nál). Helyettesítve ezzel a másolattal @ http://www.cmake.org/files/cygwin/make.exe. - fflush(stdout): A gcc könyvtár pufferelt I/O-t használ (a C specifikációnak megfelelően). A kimenet csak az újsor karakter után kerül kiírásra a kimeneti folyamba. A kimenetet
fflush()
. - A projekt neve nem tartalmazhatja a “setup” szót: Ha a C/C++ projektet olyan névvel nevezi el, amely tartalmazza a “
setup
” szót, akkor az eredményül kapott “*setup*.exe
” kiváltja az UAC (User Authorization Control) programot, és futtatásához rendszergazdai jog szükséges. (Ez nekem néhány órába telt, mire rájöttem! Próbálja meg átnevezni a “hello.exe
“-t “mysetup.exe
“-re.)
File I/O az Eclipse-ben
Hivatkozzon az Eclipse-re a Java File IO-hoz.
Vélemény, hozzászólás?