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 – 2024).

C++-ohjelmoinnin kannalta tärkein työkalu on kääntäjä ja siihen tiiviisti liittyvät esikääntäjä ja linkkeri. Kaksi yleistä vapaasti saatavilla olevaa C++-kääntäjää ovat GCC (g++) ja Clang (clang++), jotka ovat suurelta osin yhteensopivat. Näistä GCC:n käyttöä esitellään hieman jäljempänä.

Kääntäjää voi käyttää komentoriviltä suoraan tekstikomennoilla, tai sen voi liittää graafiseen kehitysympäristöön (IDE, Integrated Development Environment). Komentorivin käyttö on hyödyllinen taito mutta ei välttämätön.

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ä. Lukuisat aivan tavalliset tekstieditorit ovat hyviä C++-editoreja, ja moniin on mahdollista lisätä valinta, joka käynnistää C++-kääntäjän ennalta määrätyllä komennolla.

Hyvä kehitysympäristö sisältää usein monia koodin kirjoittamista helpottavia ominaisuuksia. Näistä yleisimpiä ovat automaattinen täydennys, vinkit koodin virheistä sekä linkit koodin eri osiin ja ohjeisiin netissä. Omien tottumusten mukainen kehitysympäristö nopeuttaa ohjelmointia. Joitakin vaihtoehtoja mainitaan seuraavissa kappaleissa.

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. Usein myös jokin hyvä tekstieditori kuuluu perusvarustukseen. Hyviä ohjelmia koodin kirjoittamiseen ovat esimerkiksi kehitysympäristöt CodeLite, KDevelop, Eclipse ja Visual Studio Code sekä tekstieditorit Kate, Geany, Emacs ja Vim. 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ä, ja sen käytöstä voi lukea lisää sen omista ohjeista tai Apple Developer -sivustolta. Maciin voi asentaa myös muita kehitysympäristöjä; esimerkiksi CodeLite ja Eclipse toimivat Mac OS X:ssä.

Työkalut Windowsille

Windowsissa nopein ratkaisu on asentaa kehitysympäristö, jonka mukana tulee kääntäjä. Vaihtoehtoja ovat esimerkiksi avoimen lähdekoodin Code::Blocks ja GCC (MinGW) tai Microsoftin ilmainen mutta rekisteröitymisen vaativa Visual Studio Community.

Pidemmän päälle joustavampi vaihtoehto on erillinen kääntäjä ja kehitysympäristö, siis vastaava järjestely kuin Linuxissa ja Macissa. Kääntäjän asentamiseen hyvä ja helppo tapa on MSYS2-ympäristö, joka esitellään seuraavaksi. Kääntäjän asentamisen jälkeen voi valita erikseen kehitysympäristön, joita on listattu vielä jäljempänä.

Kääntäjä Windowsille: MSYS2-ympäristön asennus

Kääntäjä (GCC, Mingw-w64) on helpointa asentaa MSYS2-ympäristön osana.

Kun MSYS2 on asennettu, tulee käynnistää MSYS2 UCRT64 -komentorivi. (Erinimisten ympäristöjen syistä ja eroista voi lukea MSYS2:n sivuilta.)

Aukeava komentorivi muistuttaa toiminnaltaan Linuxin komentoriviä. Kansioiden välimerkkinä on "/" eikä "\". Tutut Windowsin kansiot löytyvät sijainnista /c/Users/Käyttäjänimi. Kun komentorivillä painaa pari kertaa tabulaattoria, komentorivi tarjoaa ehdotuksia (kuten tiedostonimiä) keskeneräisen komennon jatkoksi.

Komentorivillä voi päivittää järjestelmän ja kaikki asennetut paketit, asentaa työkaluja sekä etsiä ja asentaa yleisimpiä kirjastoja:

# Päivitetään:
pacman -Syu

# Asennetaan kääntäjä ja siihen liittyviä työkaluja (CMake, Make):
pacman -S mingw-w64-ucrt-x86_64-toolchain
pacman -S mingw-w64-ucrt-x86_64-cmake
pacman -S make

# Esimerkki: Etsitään ucrt-ympäristöön sopivat SDL-paketit, asennetaan SDL2.
pacman -Ss ucrt SDL
pacman -S mingw-w64-ucrt-x86_64-SDL2

Kääntäjän sijainti näin asennettuna on C:\msys64\ucrt64\bin. Tätä tietoa saattaa tarvita myöhemmin kehitysympäristöjä asentaessa.

Kun kääntäjä on asennettu, sitä voi helposti käyttää MSYS2 UCRT64 -komentorivillä. Seuraavaksi siirrytään työpöydälle, tehdään uusi kansio, tehdään kooditiedosto ja käännetään se.

# Siirrytään työpöydälle.
cd /c/Users/Käyttäjänimi/Desktop

# Luodaan kansio cpp-testi ja siirrytään siihen.
mkdir cpp-testi
cd cpp-testi

# Avataan kooditiedosto main.cpp tekstieditorissa.
start notepad main.cpp

Nyt kooditiedostoon voi tallentaa vaikka opassarjan esimerkkiohjelman.

Sitten käännetään koodi komentorivillä:

g++ -Wall main.cpp

Jos ei näy virheilmoitusta, koodi on käännetty ja tuloksena on ohjelma a.exe, jonka voi nyt käynnistää komentorivillä:

./a.exe

Ohjelman voi käynnistää myös työpöydältä.

Kehitysympäristöt Windowsille ja MSYS2:lle

Edellä asennetun kääntäjän kanssa voi käyttää esimerkiksi seuraavia kehitysympäristöjä:

Visual Studio Code on moderni ja laajennettava kehitysympäristö, ja sillä on ohjeet käyttöön GCC:n ja MinGW:n kanssa. Kun asentaa C/C++-laajennoksen, kääntäjä löytyy automaattisesti ja toimii suoraan.

Eclipse IDE on laajalti käytetty ammattilaistason kehitysympäristö, johon saa myös C++-työkalut. Oikeat valinnat C++-projektia luodessa ovat ”C++ Managed Build” ja kääntäjäksi ”MinGW GCC”, niin edellä asennettu MSYS2-ympäristö löytyy automaattisesti.

CodeLite on kevyt perusympäristö, jossa myös voi käyttää edellä asennettua kääntäjää.

Koodin voi kääntää ja ajaa seuraavilla ohjeilla myös komentoriviltä, vaikka sitä kirjoittaisi kehitysympäristöllä.

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

Komentorivillä ohjelman voi kääntää g++:llä esimerkiksi näin:

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

Komennon alussa on käytettävä ohjelma, C++-kääntäjä g++. Viivalla alkavat merkinnät ovat vapaavalintaisia kääntäjän asetuksia: Parametri -std=c++23 käskee kääntäjän käyttää C++:n vuonna 2023 julkaistua standardia; edellisiä versioita ovat c++20 ja c++17. Parametrit -Wall ja -pedantic käskevät kääntäjän varoittaa mahdollisimman monista pienistäkin virheistä. Kääntäjän ilmoitukset kannattaa aina lukea tarkasti ja pyrkiä korjaamaan. Parametria -o seuraava sana (ohjelma.exe) kertoo, mihin tiedostoon käännetty ohjelma pitäisi tallentaa. Lopuksi tulevat käännettävien tiedostojen nimet eli tässä tapauksessa vain koodi.cpp. Kooditiedostoja voi kääntää kerralla useammankin luettelemalla niiden kaikkien nimet.

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.

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.

Komennot talteen Makefile-tiedostoon

Komentorivillä joutuu kirjoittamaan joskus pitkiä komentoja. Tätä helpottaa GNU Make (lyhyemmin vain make), joka suorittaa Makefile-tiedostoon tallennettuja valmiita ”reseptejä”. Esimerkiksi C++-ohjelman kääntämiseksi voi tehdä seuraavan Makefile-nimisen tiedoston:

ohjelma.exe: koodi.cpp toinen.cpp
	g++ -std=c++23 -Wall -pedantic -o $@ $^

Tässä reseptissä kerrotaan, että ohjelma.exe tehdään tiedostoista koodi.cpp ja toinen.cpp. Seuraavalla rivillä tabulaattorin jälkeen tulee komento. Käännöskomennossa $@ korvautuu kohteen nimellä (ohjelma.exe) ja $^ korvautuu lähdetiedostojen nimillä (koodi.cpp ja toinen.cpp).

Makefile-tiedoston ensimmäisen reseptin voi suorittaa lyhyellä komennolla:

make

Jos tiedostossa on useampia reseptejä, niitä voi suorittaa nimen mukaan:

make ohjelma.exe

Näillä vinkeillä pitäisi päästä C++-ohjelmoinnissa alkuun. Tarvittaessa voi kysyä neuvoa keskustelussa.


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