Eclipse 4.3 (Kepler) C/C++-ohjelmointiin
On 9 marraskuun, 2021 by adminEclipse on IBM:n tukema avoimen lähdekoodin integroitu kehitysympäristö (IDE). Emosivusto on @ www.eclipse.org. Eclipse on suosittu Java-projektien kehittämiseen. Se tukee myös C/C++-, PHP-, Python-, Perl- ja muiden web-projektien kehittämistä laajennettavien lisäosien avulla. Eclipse on cross-platform ja toimii Windowsissa, Linuxissa ja Mac OS:ssä.
How to Install Eclipse C/C++ Development Tool (CDT) 8.1.2 for Eclipse 4.2.2 (Juno)
Vaihe 0: Asenna MinGW GCC tai Cygwin GCC
Käyttääksesi Eclipseä C/C++-ohjelmointiin tarvitset C/C++-kääntäjän. Windowsissa voit asentaa joko MinGW GCC:n tai Cygwin GCC:n. Valitse MinGW, jos et ole varma, koska MinGW on kevyempi ja helpompi asentaa, mutta siinä on vähemmän ominaisuuksia.
- MinGW GCC:
- Cygwin GCC: Lue ”Cygwinin asentaminen”. Varmista, että valitset ”
gcc
”, ”g++
”, ”gdb
” ja ”make
” paketit kohdasta ”Devel
”. (Development) -luokkaan – nämä paketit eivät kuulu oletusasennukseen.
Vaihe 1: Asenna Eclipsen C/C++-kehitystyökalu (CDT)
CdT:n voi asentaa kahdella tavalla riippuen siitä, oletko aiemmin asentanut Eclipsen:
- Jos olet jo asentanut ”Eclipse for Java Developers” tai muita Eclipse-paketteja, voit asentaa CDT-liitännäisen seuraavasti:
Käynnistä Eclipse ⇒ Ohje ⇒ Asenna uudet ohjelmistot ⇒ ”Työskentele” -kentässä vedä alas pudotusvalikko ja valitse ”Kepler – http://download.eclipse.org/releases/kepler” (tai juno Eclipse 4.2:lle; tai helios Eclipse 3.7:lle).
”Name”-kentässä laajenna ”Programming Language”-solmua ⇒ Valitse ”C/C++ Development Tools” ⇒ ”Next” ⇒ … ⇒ ”Finish”. - Jos et ole asentanut mitään Eclipse-pakettia, voit ladata ”Eclipse IDE for C/C++ Developers” osoitteesta http://www.eclipse.org/downloads ja purkaa ladatun tiedoston pakkauksen haluamaasi hakemistoon.
Vaihe 2: Konfigurointi
Mitä tahansa konfigurointia EI tarvitse tehdä, kunhan Cygwin- tai MinGW-ohjelmiston binäärit ovat sisällytettyinä ympäristömuuttujaan PATH
. CDT etsii PATH
:sta löytääkseen C/C++-kääntäjät.
Ensimmäisen C/C++-ohjelman kirjoittaminen Eclipsessä
C++-ohjelma
Vaihe 0: Käynnistä Eclipse
- Käynnistä Eclipse ajamalla ”
eclipse.exe
” Eclipseen asennetussa hakemistossa. - Valitse sopiva hakemisto työalueellesi (esim, johon haluat tallentaa työsi).
- Jos ”Tervetuloa”-näyttö tulee näkyviin, sulje se klikkaamalla ”sulje”-painiketta.
Vaihe 1: Luo uusi C++-projekti
Jokaista C++-sovellusta varten on luotava projekti, jossa säilytetään kaikki lähdekoodit, objektitiedostot, suoritettavat tiedostot ja asiaankuuluvat resurssit.
Luot uuden C++-projektin:
- Valitse ”Tiedosto”-valikosta ⇒ ”Uusi” ⇒ Projekti… ⇒ C/C++ ⇒ C++-projekti.
- ”C++-projekti”-valintaikkuna avautuu.
- Kirjoita ”Projektin nimi”-kenttään ”
FirstProject
”. - Valitse ”Projektityypit”-ruutuun ”Suoritettava” ⇒ ”Tyhjä projekti”
- Valitse ”Työkalujen tyypit”-ruudusta ”Suoritettava” ⇒ ”Tyhjä projekti”
- Valitse työkalujen ”Työkalujen” -ruutuun kääntäjäsi, esim, ”Cygwin GCC” tai ”MinGW GCC” ⇒ Seuraava.
- Kirjoita ”Projektin nimi”-kenttään ”
- ”Select Configurations” -valintaikkuna tulee näkyviin. Valitse sekä ”Debug” että ”Release” ⇒ Finish.
Vaihe 2: Kirjoita Hello-world C++ -ohjelma
- ”Project Explorerissa” (vasemmanpuoleisin paneeli) ⇒ Napsauta hiiren kakkospainikkeella ”
FirstProject
”. (tai käytä ”File”-valikkoa) ⇒ New ⇒ Source File. - ”New Source File”-valintaikkuna avautuu.
- Kirjoita ”Source file”-kenttään ”
Hello.cpp
”. - Klikkaa ”Finish”.
- Kirjoita ”Source file”-kenttään ”
- Lähdetiedosto ”
Hello.cpp
” avautuu editoripaneeliin (avaa tarvittaessa kaksoisnapsauttamalla ”test.cpp
”). Syötä seuraavat koodit:#include <iostream>using namespace std; int main() { cout << "Hello, world!" << endl; return 0;}
Jos ”Unresolved Inclusion Error”
Jos #include
-lausekkeen vieressä näkyy virhe ”unresolved inclusion”, ”include paths for headers” ei ole asetettu oikein. Valitse ”Project”-valikko ⇒ Properties ⇒ C/C++ General ⇒ Paths and Symbols ⇒ ”Includes”-välilehdellä:
Cygwin GCC:lle:
- ”Lisää” seuraavat hakemistot ”GNU C” -kenttään, jossa
$CYGWIN_HOME
on asennettu Cygwin-hakemistosi:$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
- ”Lisää” seuraavat hakemistot ”GNU C++” -hakemistoon, jossa
$CYGWIN_HOME
on Cygwinin asennettu hakemisto:$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
-
$CYGWIN_HOME\usr\include\w32api
MinGW:n GCC:n osalta:
- ”Lisää” seuraavat hakemistot kohtaan ”GNU C”, jossa
$MINGW_HOME
on MinGW:n asennettu hakemisto:$MINGW_HOME\lib\gcc\mingw32.6.x\include
$MINGW_HOME\include
$MINGW_HOME\lib\gcc\mingw32.6.x\include-fixed
- ”Lisää” seuraavat hakemistot ”GNU C++” -hakemistoon, jossa
$MINGW_HOME
on Cygwinin asennettu hakemisto:$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
Huomautus: Löytääksesi otsikoiden polut voit tehdä haun otsikoilla, kuten esim. ”stdio.h
”. (C:lle) ja ”iostream
”. (C++:lle) Cygwinin tai MinGW:n asennetun hakemiston alta.
libmpfr4
” cygwiniin.Vaihe 3: Compile/Build
Klikkaa hiiren oikealla painikkeella ”FirstProject
” (tai käytä ”Project”-valikkoa) ⇒ valitse ”Build Project” kääntääksesi ja linkittääksesi ohjelman.
Vaihe 4: Suorita
Klikkaa hiiren kakkospainikkeella hiiren kakkospainikkeella ”FirstProject
” (tai missä tahansa lähdekoodissa ”test.cpp
”, tai valitse ”Suorita”-valikko) ⇒ Suorita nimellä ⇒ Paikallinen C/C++-sovellus ⇒ (Jos kysytään, valitse Cygwinin gdb-debuggeri) ⇒ ”Konsoli”-paneeliin ilmestyy ulostulo ”Hello, world!”.
Huomautus: Sinun on luotava uusi C++-projekti JOKAISTA ohjelmointiongelmaa varten. Tämä on sotkuista leluohjelmien kirjoittamisessa!
C-ohjelma
Seuraa samoja vaiheita kuin edellä. Luo ”C-projekti” (C++-projektin sijaan). Kokeile seuraavaa Hello-world-ohjelmaa (nimeltään ”Hello.c
”).
#include <stdio.h> int main() { printf("Hello, world!\n"); return 0;}
C++-ohjelma makefileen
Edellisissä esimerkeissä käytimme niin sanottua managed-makea, jossa Eclipse generoi automaattisesti makefileen ohjelman rakentamiseksi. Voimme myös halutessamme kirjoittaa oman makefilen, jolloin voimme hallita rakentamisprosessia täysin.
Vaihe 1: C++ Makefile-projektin luominen
Valikosta ”File” ⇒ New ⇒ Project… ⇒ C/C++ ⇒ C++-projekti ⇒ Kirjoita ”Projektin nimi” -kohtaan ”HelloCppMakefile
”. ⇒ Kohdassa ”Projektin tyyppi” valitse ”Makefile-projekti ”, ”Tyhjä projekti” ⇒ Kohdassa ”Työkaluketjut” valitse ”Cygwin GCC” tai ”MinGW GCC”. Älä välitä varoitusviestistä.
Vaihe 2: Kirjoita C++-ohjelma
Klikkaa hiiren kakkospainikkeella projektia ⇒ Uusi ⇒ Lähdetiedosto ⇒ Kirjoita ”Lähdetiedosto” -kohtaan ”Hello.cpp
”. ⇒ Kirjoita seuraavat lähdekoodit:
#include <iostream>using namespace std; int main() {cout << "Hello, world!" << endl;return 0;}
Vaihe 3: Kirjoita Makefile
Klikkaa hiiren oikealla hiiren kakkospainikkeella projektia ⇒ Uusi ⇒ Tiedosto ⇒ Kohtaan ”Tiedoston nimi” kirjoita ”makefile
” ⇒ Syötä seuraavat koodit. Huomaa, että sisennyksessä on käytettävä välilehteä (EI välilyöntejä).
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
Vaihe 4: Rakenna projekti
Klikkaa hiiren kakkospainikkeella projektia ⇒ Rakenna projekti.
Vaihe 5: Suorita ohjelma
Klikkaa hiiren kakkospainikkeella projektia ⇒ Suorita nimellä ⇒ Paikallinen C/C++-sovellus.
Kirjoita makefile, jolla voit kääntää leluohjelmat yhden projektin alle.
Lue dokumentaatio
Vähintäänkin sinun PITÄÄ selata Eclipsen ”Workbench-käyttöopas” ja ”C/C++-kehityksen käyttöopas” – joihin pääset Eclipsen ”Tervetuloa”-sivun tai ”Ohje”-valikon kautta. Näin säästyt monilta tuskallisilta tunneilta, kun yrität myöhemmin selvittää, miten joitain asioita tehdään.
C/C++ -ohjelmien virheenkorjaus Eclipse CDT:ssä
Kyky käyttää graafista virheenkorjausohjelmaa ohjelman virheenkorjaukseen on ratkaisevan tärkeää ohjelmoinnissa. Se voi säästää lukemattomia tunteja arvailemasta, mikä meni pieleen.
Vaihe 0: Kirjoita C++-ohjelma – Seuraava ohjelma laskee ja tulostaa luvun n
(=1*2*3*...*n
) faktoriaalin. Ohjelmassa on kuitenkin looginen virhe ja se tuottaa väärän vastauksen n
=20
(”The Factorial of 20 is -2102132736
” – negatiivinen luku?!).
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
Käyttäkäämme graafista virheenkorjausohjelmaa.
Vaihe 1: Aseta alustava taukopiste – Taukopiste keskeyttää ohjelman suorituksen, jotta voit tutkia ohjelman sisäisiä tiloja (esim, muuttujien arvoja) ohjelmassa. Ennen debuggerin käynnistämistä sinun on asetettava vähintään yksi pysäytyspiste ohjelman suorituksen keskeyttämiseksi ohjelman sisällä. Aseta pysäytyskohta main()
-funktioon kaksoisnapsauttamalla main()
sisältävän rivin vasenta reunaa. Sininen ympyrä ilmestyy vasempaan reunaan osoittaen, että kyseiselle riville on asetettu taukopiste.
Vaihe 2: Käynnistä debuggeri – Napsauta hiiren kakkospainikkeella projektia (tai käytä ”Suorita”-valikkoa) ⇒ ”Debug As” ⇒ ”Paikallinen C/C++-sovellus” ⇒ valitse ”Kyllä” vaihtaaksesi ”Debug”-näkökulmaan (Näkökulma on paneelien tietynlainen sijoittelun, joka soveltuu tiettyyn kehitystehtävään, kuten muokkaamiseen tai virheenkorjaukseen, mukaan). Ohjelma aloittaa suorituksen, mutta keskeyttää toimintansa taukopisteeseen eli main()
-funktioon.
Kuten seuraavassa kuvassa näkyy, korostettu viiva (johon myös sininen nuoli osoittaa) osoittaa seuraavassa vaiheessa suoritettavan lausekkeen.
Vaihe 3: Vaihe 3: Step-Over ja muuttujien ja ulostulojen tarkkailu – Napsauttamalla Step-Over-painiketta (”Step Over”) (tai valitsemalla ”Step-Over” (Vaihe 4) ”Run”-valikosta) voit käydä ohjelmasi läpi yksittäisaskeleella. Tutki jokaisella askeleella muuttujien arvoja (”Variable”-paneelissa) ja ohjelmasi tuottamia ulostuloja (”Console”-paneelissa), jos sellaisia on. Voit myös asettaa kursorin minkä tahansa muuttujan kohdalle tarkastellaksesi muuttujan sisältöä.
Single-stepping through the program and watching the values of internal variables and the outputs produced is the ultimate mean in debugging programs – because it is exactly how the computer runs your program!
Step 4: Breakpoint, Run-To-Line, Resume and Terminate – As mentioned, a breakpoint suspends program execution and let you allow you examine the internal states of the program. Voit asettaa taukopisteen tietylle lausekkeelle kaksoisnapsauttamalla kyseisen rivin vasenta reunaa (tai valitsemalla ”Toggle Breakpoint” (Vaihda taukopiste) ”Run” (Suorita) -valikosta).
”Resume” (Jatka) jatkaa ohjelman suoritusta seuraavaan taukopisteeseen tai ohjelman loppuun asti.
”Single-step” (Yksivaiheinen) silmukan, jossa on suuri laskentaerä, läpäiseminen on aikaa vievää. Voit asettaa taukopisteen välittömästi silmukan ulkopuolella olevaan lausekkeeseen (esim. edellä olevan ohjelman rivi 12) ja antaa ”Resume”-komentoa silmukan suorittamiseksi loppuun.
Vaihtoehtoisesti voit asettaa kursorin tiettyyn lausekkeeseen ja antaa ”Run-To-Line”-komentoa ”Run”-valikosta jatkaaksesi ohjelman suorittamista kyseiseen riviin asti.
”Terminate”-komento lopettaa virheenkorjaussession. Lopeta aina nykyinen debuggausistunto käyttämällä ”Terminate” tai ”Resume” ohjelman loppuun asti.
Vaihe 5: Paluu C/C++-näkökulmaan – Napsauta oikeassa yläkulmassa olevaa ”C/C++”-näkökulman kuvaketta siirtyäksesi takaisin ”C/C++”-näkökulmaan jatko-ohjelmointia varten (tai ”Ikkuna”-valikosta ⇒ Avaa näkymä ⇒ C/C++).
En voi enempää painottaa, että virheenkorjausohjelmiston käytön hallitseminen on ratkaisevan tärkeää ohjelmoinnissa. Tutustu debuggerien tarjoamiin ominaisuuksiin.
Muut debuggerin ominaisuudet
Muuttujan arvon muuttaminen: Voit muuttaa muuttujan arvoa syöttämällä uuden arvon ”Variable”-paneeliin. Tämä on kätevää, kun haluat tilapäisesti muuttaa ohjelman käyttäytymistä muuttamatta lähdekoodia.
Step-Into ja Step-Return: Kun haluat debugata funktiota, sinun on käytettävä ”Step-Into” -toimintoa astuaksesi metodin ensimmäiseen lausekkeeseen. Voit käyttää ”Step-Returnia” palataksesi takaisin kutsujalle missä tahansa metodin sisällä. Vaihtoehtoisesti voit asettaa pysäytyspisteen metodin sisälle.
HUOMAUTUS: Jos saat virheilmoituksen ”Can’t find a source file at /cygdrive/c
…” debuggauksen aikana, sinun on määritettävä kartoitus ”/cygdrive/c
” ja ”c:/
” välille (olettaen, että ohjelmasi säilytetään asemassa c. From ”Window” ⇒ ”Preferences” ⇒ ”C/C++” ⇒ ”Debug” ⇒ ”Common Source Lookup Path”, valitse ”Add” ⇒ ”Path Mapping”.
Vihjeitä & Niksit
Lue Eclipse for Java:n Vinkit & Niksit -osiosta yleisiä vinkkejä Eclipsen käyttöön.
C/C++ ohjelmistokehitys GCC:n avulla
- Eclipse CDT:ssä käytettävät komennot projektin rakentamiseen löydät osoitteesta ”
<workspace>\.metadata\.plugins\org.eclipse.cdt.ui\global-build.log
”. - include-polkujen, kirjastopolkujen ja kirjastojen asettaminen: Kun ohjelmaa rakennetaan, kääntäjä tarvitsee otsikkotiedostoja kääntääkseen lähdekoodit; linkittäjä tarvitsee kirjastoja ratkaistakseen ulkoiset viittaukset. Kääntäjä etsii ”include-poluista”
#include
-direktiiveissä määritellyt otsikkotiedostot. Linkittäjä etsii ”library-polkuista” ”kirjastot”, joita tarvitaan ohjelman linkittämiseen. GCC:ssä include-polku määritetään-Idir
-optiolla tai ympäristömuuttujallaCPATH
. Kirjasto-polku määritetään-Ldir
-optiolla tai ympäristömuuttujallaLIBRARY_PATH
. Kirjastolibxxx.a
määritetään-lxxx
-vaihtoehdon kautta (pieni kirjain'l'
, ilman etuliitettälib
ja.a
-laajennusta).
Eclipse CDT:ssä include-polut, kirjastopolut ja kirjastot määritetään hiiren kakkospainikkeella projektissa ⇒ Ominaisuudet ⇒ C/C++ Yleinen ⇒ Polut ja symbolit ⇒ välilehdillä ”Includes”, ”Kirjastopolut” ja ”Kirjastot”. Asetukset koskevat vain valittua projektia.
Jos haluat asettaa include- ja kirjastopolut kaikille projekteille, aseta ympäristömuuttujatCPATH
jaLIBRARY_PATH
. Valitse Eclipsessä ”Window” ⇒ Preferences ⇒ C/C++ ⇒ Build ⇒ Environment.
Vaihtoehtoisesti voit kopioida otsikot ja kirjastot järjestelmähakemistoihin, jolloin voit jättää include-polut ja kirjastopolut pois. - OpenGL with GLUT: Cygwiniin on asennettava gcc, g++, gdb, make (Devel-luokassa) ja opengl, freeglut (graphics-luokassa). Otsikot
gl.h
,glu.h
,glut.h
pidetään$cygwin\usr\include\w32api\GL
:ssä. Käytä#include <GL/gl__.h>
sisällyttääksesi otsikot. Kirjastotlibopengl32.a
libglu32.a
jalibglut32.a
säilytetään$cygwin\lib\w32api
:ssa. Jos haluat määrittää nämä kirjastot linkityksessä, käytä-lopengl32
-lglu32
-lglut32
-vaihtoehtoja (ilmanlib
-etuliitettä ja.a
-laajennusta). - OpenGL with SDL: Lataa SDL osoitteesta http://www.libsdl.org. Valitse Development Libraries ⇒ win32 ⇒ mingw32 ⇒ Unzip. Kopioi otsikkohakemisto
SDL
(kohdassainclude
) paikkaan$cygwin\usr\include\w32api
; kopioi kaikki kirjastotiedostot kohdassalib
paikkaan$cygwin\lib\w32api
; kopioi ajoaikakirjastoSDL.dll
(kohdassabin
) paikkaanWindows/System32
. Sisällytä ohjelmaasi nämä kaksi otsikkoa:#include <SDL/sdl.h>
ja#include <SDL/sdl_opengl.h>
. Lisää linkitystä varten nämä kirjastot:-lSDL
-lSDLmain
. - #pragma-kommenttidirektiivi: pragma-kommenttidirektiiviä, esim.
#pragma comment(lib, "opengl32.lib")
, käytetään usein tietyn kirjaston sisällyttämiseen (sama kuin-l
-valinta). Tämä järjestelmäriippuvainen direktiivi toimii Windowsin kääntäjällä, mutta EI GCC:ssä. - Virhe ”multiple target patterns”: GNU make -ohjelmassa on ongelma (kohdassa
$Cygwin\bin\make.exe
). Korvattu tällä kopiolla @ http://www.cmake.org/files/cygwin/make.exe. - fflush(stdout): gcc-kirjasto käyttää puskuroitua I/O:ta (C-spesifikaation mukaisesti). Tuloste kirjoitetaan tulostusvirtaan vasta rivinvaihdon jälkeen. Voit huuhtoa tulosteen
fflush()
. - Projektin nimi ei saa sisältää sanaa ”setup”: Jos nimeät C/C++-projektin nimellä, joka sisältää sanan ”
setup
”, tuloksena syntyvä ”*setup*.exe
” käynnistää UAC:n (User Authorization Control) ja vaatii järjestelmänvalvojan oikeudet suoritettavaksi. (Tämän selvittäminen vei minulta muutaman tunnin! Kokeile nimetä ”hello.exe
” uudelleen muotoon ”mysetup.exe
”.)
File I/O in Eclipse
Viittaa Eclipseen Javan File IO.
Vastaa