Kirjautuminen

Haku

Tehtävät

Oppaat: C++-ohjelmointi: Liite 1 - C++-kehitysympäristöt

  1. Osa 1 - Johdanto
  2. Osa 2 - Vakiot, muuttujat ja perustietotyypit
  3. Osa 3 - Ehdot, silmukat ja poikkeukset
  4. Osa 4 - Rakenteet, taulukot ja merkkijonot
  5. Osa 5 - Funktiot
  6. Osa 6 - Esittelyt, määrittelyt ja elinajat
  7. Osa 7 - Viittaukset, osoittimet ja dynaaminen muisti
  8. Osa 8 - Mallit
  9. Osa 9 - Luokkien perusteet
  10. Osa 10 - Luokkien erikoiset jäsenet
  11. Osa 11 - Luokkien perintä
  12. Liite 1 - C++-kehitysympäristöt
  13. Liite 2 - Valmis C++-kääntäjäpaketti

Kirjoittaja: Metabolix (2009 – 2013).

C++-ohjelmoinnin kannalta kaikkein olennaisin asia on kääntäjä ja sen kanssa toimivat esikääntäjä ja linkkeri. Koodin kirjoittamiseen kannattaa lisäksi hankkia hyvä editori, joka osaa värittää varatut sanat ja muut tärkeät kohdat koodista ja auttaa koodin sisentämisessä. Joskus nämä toimitetaan samassa paketissa, joskus ne täytyy asentaa erikseen. Editoria, jossa voi helposti hallita myös käännösprosessia, kutsutaan IDEksi (Integrated Development Environment). Usein IDE sisältää myös monia muita kehityksen kannalta käytännöllisiä ominaisuuksia. Omien tottumusten mukainen kehitysympäristö nopeuttaa ohjelmointia.

Lukuisat aivan tavalliset tekstieditorit ovat hyviä C++-editoreja, ja joihinkin voi myös lisätä yksinkertaisen käännöstoiminnon. Kääntäjiä voi aina käyttää myös komentoriviltä käsin; GCC:n eli GNU Compiler Collectionin C++-kääntäjä on nimeltään g++, ja sen käyttöä käsitellään hieman jäljempänä. Jos siis komentorivi ei tunnu liian pelottavalta, kannattaa vain valita jokin mieluisa tekstieditori. Joitakin vaihtoehtoja mainitaan seuraavissa kappaleissa. Muiden kääntäjien kuin GCC:n (g++:n) käyttöä ei tässä käsitellä.

Työkalut Linuxille ja BSD:lle

Eri Linux- ja BSD-versioissa ohjelmat on yleensä mahdollista asentaa jonkinlaisella paketinhallintatyökalulla. Ainakin GCC (g++) tai Clang (clang++) on varmasti saatavilla, joskus jopa valmiiksi asennettu, ja usein myös jokin hyvä tekstieditori kuuluu perusvarustukseen. Hyviä ohjelmia koodin kirjoittamiseen ovat mm. CodeLite, Code::Blocks, Eclipse CDT ja KDevelop sekä Kate, Geany, Emacs ja Vim. Näitä kaikkia on mahdollista käyttää myös kehitysympäristönä. Myös mikä tahansa muu mieluisa tekstieditori käy; käännöskomennon voi aivan hyvin kirjoittaa myös komentoriville eli konsoliin tai terminaaliin.

Työkalut Macille

Mac OS X:n mukana tulevat GCC (ja g++) sekä kehitysympäristö nimeltä Xcode. Macin komentorivi eli Pääte (Terminal) toimii kuten Linuxin komentorivi, ja GCC:llä ohjelmat käännetään samalla tavalla. Xcodea voi käyttää sekä tekstieditorina että kehitysympäristönä; kehitysympäristökäytöstä voi lukea lisää sen omista ohjeista tai Apple Developer Connection -sivustolta. Maciin voi asentaa myös muita kehitysympäristöjä; mm. CodeLite ja Eclipse CDT toimivat Mac OS X:ssä.

Työkalut Windowsille

Windowsissakin käytetyin vapaa C++-kääntäjä lienee GCC:n g++, josta on kaksi yleistä Windows-versiota: MinGW-työkaluihin sisältyy 32-bittinen kääntäjä, ja TDM-GCC:stä on sekä 32-bittinen että 64-bittinen versio. Kääntäjien asennus ja käyttö sellaisenaan on kuitenkin Windowsissa työlästä, minkä vuoksi Ohjelmointiputkassa on tarjolla valmis paketti, jolla pääsee nopeasti alkuun. Kääntäjän lisäksi kannattaa ladata jokin hyvä tekstieditori, esimerkiksi Notepad++ tai Crimson Editor. Myös seuraavaksi käsiteltäviä kehitysympäristöjä voi halutessaan käyttää pelkkinä editoreina.

Kokonaisen kehitysympäristön asentaminen helpottaa Windowsissa ohjelmointia huomattavasti. Ohjelmointi eri ympäristöissä on sinänsä samanlaista, joten ympäristön valinta on lähinnä mieltymyskysymys. Helpoimmat vaihtoehdot ovat Dev-C++, CodeLite ja Code::Blocks, jotka saa ladattua yhdessä MinGW- tai TDM-GCC-kääntäjän kanssa. NetBeans, Eclipsen C/C++-työkalut ja Qt Creator vaativat kääntäjän asentamisen erikseen. Microsoftin ilmainen Visual C++ Express Edition (lyhennetään usein MSVC tai VC++) on myös maininnan arvoinen kehitysympäristö.

Dev-C++ on helppo asentaa. Etusivulta löytyvät uusimmat asennuspaketit, joissa on Dev-C++-kehitysympäristö ja jompikumpi GCC:n Windows-versioista. Asennuksen jälkeen uuden ohjelmointiprojektin voi luoda helposti valikosta. Tämän oppaan ohjelmat ovat komentoriviohelmia, joten oikea projektityyppi on "Console application". Ohjelmat käännetään ja ajetaan näppäimellä F11 tai valitsemalla valikosta "Compile & Run".

CodeLite on myös helppo asentaa ja käyttää. Lataussivulta saa Windows-version, jossa on mukana kääntäjä.

Code::Blocks on helppo asentaa, ja asennuksesta on jopa video YouTubessa. Lataussivulta valitaan Windows-versio, jonka nimessä lukee "codeblocks" ja "mingw". Code::Blocksin asennuksen yhteydessä kannattaa asentaa myös DevPak-plugin, joka helpottaa myöhemmin lisäkirjastojen hankkimista.

Visual C++ Express Edition on toiminnaltaan suoraviivainen, mutta ladattava tiedosto on melko suuri ja ympäristöä moni pitää raskaana. Lisäksi Microsoftin kääntäjässä ja kirjastoissa on koko joukko ominaisuuksia, jotka eivät sovi yhteen muiden C++-kääntäjien kanssa.

Eclipse on niin ikään laadukas kehitysympäristö, mutta sitä varten täytyy asentaa erikseen MinGW-työkalut ja MSYS, mikä ei ole aivan yksinkertaista. Eräs Max Berger on kirjoittanut aiheesta englanniksi tarkat ohjeet.

NetBeans on hyvin samantapainen kuin Eclipse, ja sitäkin varten täytyy itse asentaa MinGW.

Qt Creator on suunniteltu erityisesti graafisten ohjelmien tekemiseen Qt-kirjastolla, mutta sillä voi tehdä myös tavallisia ohjelmia. MinGW täytyy jälleen asentaa erikseen.

GCC:n käyttämiseksi sellaisenaan täytyy avata komentorivi. Komentorivin voi avata luomalla pikakuvakkeen ohjelmaan cmd (tai command vanhemmissa Windowseissa). Avointa hakemistoa vaihdetaan komennolla cd "C:\uusi\hakemisto" ja ohjelmat ajetaan kirjoittamalla ohjelman nimi, esimerkiksi g++ tai C:\MinGW\bin\g++. Lisätietoa komentorivistä on aiheeseen omistautuneella sivustolla. GCC:n käännöskomentoja käsitellään seuraavassa kappaleessa.

Koodin kääntäminen GCC:llä eli g++:lla

Komentorivillä ohjelman kääntäminen tapahtuu g++:n kanssa esimerkiksi seuraavalla komennolla:

g++ koodi.cpp -o ohjelma.exe -std=c++11 -Wall -pedantic

Komennon alussa on käytettävä ohjelma, C++-kääntäjä g++. Esimerkin ensimmäinen parametri, koodi.cpp, on käännettävän kooditiedoston nimi. Kooditiedostoja voi kääntää kerralla useammankin antamalla samassa komennossa niiden kaikkien nimet. Viivalla alkavat merkinnät ovat vapaavalintaisia kääntäjän asetuksia: -o:ta seuraava parametri (ohjelma.exe) kertoo, mihin tiedostoon käännetty ohjelma pitäisi tallentaa. -Wall ja -pedantic käskevät kääntäjän varoittaa mahdollisimman monista pienistäkin virheistä. -std=c++11 käskee kääntäjän käyttää C++:n vuonna 2011 julkaistua standardia; vanhemmissa GCC:n versioissa tätä mahdollisuutta ei ehkä ole, joten täytyy käyttää vuoden 1998 standardia (-std=c++98) tai jättää tämä parametri kokonaan pois. Kääntäjän ilmoitukset kannattaa aina lukea tarkasti ja pyrkiä korjaamaan.

Muita yleisiä asetuksia GCC:lle ovat -O1 ja -O2, jotka optimoivat käännettävää ohjelmaa nopeammaksi, -g, joka liittää ohjelman mukaan ylimääräistä tietoa lähdekoodista debuggausta eli virheiden etsintää varten, ja -s, joka puolestaan poistaa ohjelmasta kaiken ylimääräisen tiedon, jotta ohjelmasta tulisi mahdollisimman pieni. Lisäksi erilaisia apukirjastoja liitetään parametreilla -lX, missä X on kirjaston nimi. Esimerkiksi OpenGL liitetään Windowsissa parametrilla -lopengl32 ja Linuxissa parametrilla -lGL.

Sekä esikäännös että varsinainen käännös ja linkitys tapahtuvat esitetyllä komennolla yhdellä kertaa, mutta tarvittaessa ne voidaan tehdä erikseenkin. Ohjelman voi ajaa kirjoittamalla sen nimen, ohjelma.exe tai joskus ./ohjelma.exe. Linuxissa ja Macissa tiedostopäätettä (.exe) ei ole tapana käyttää, mutta jos se on käännöskomennossa, sitä täytyy käyttää myös ajovaiheessa, koska se on osa ohjelman nimeä. Windowsissa taas pääte on välttämätön, jotta tiedosto tunnistetaan ohjelmaksi, mutta ajovaiheessa sitä ei ole pakko käyttää, koska Windows voi arvata sen itse.


Kommentit

Matias [17.06.2014 14:04:17]

#

Hyvä opas!

Kirjoita kommentti

Huomio! Kommentoi tässä ainoastaan tämän oppaan hyviä ja huonoja puolia. Älä kirjoita muita kysymyksiä tähän. Jos koodisi ei toimi tai tarvitset muuten vain apua ohjelmoinnissa, lähetä viesti keskusteluun.

Muista lukea kirjoitusohjeet.
Tietoa sivustosta