Development/Tutorials/First program (fi): Difference between revisions

From KDE TechBase
No edit summary
 
(18 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Template:I18n/Language Navigation Bar|Development/Tutorials/First_program}}
 
{{TutorialBrowser|
{{TutorialBrowser|


series=Beginner Tutorial|
series=Beginner Tutorial|


name=Hello World|
name=Perehdytys 1 - Hei Maailma!|


pre=[http://mindview.net/Books/TICPP/ThinkingInCPP2e.html C++], [http://www.trolltech.com/products/qt/ Qt], [[Getting_Started/Build/KDE4|KDE4 development environment]]|
pre=[http://mindview.net/Books/TICPP/ThinkingInCPP2e.html C++], [http://www.trolltech.com/products/qt/ Qt], [[Getting_Started/Build/KDE4|KDE4 development environment]]|


next=[[Development/Tutorials/Using_KXmlGuiWindow|Tutorial 2 - KXmlGuiWindow]]|  
next=[[Development/Tutorials/Using_KXmlGuiWindow (fi)|Perehdytys 2 - Main-ikkunan luonti]]|  


reading=[[Development/Tutorials/CMake|CMake]]
reading=[[Development/Tutorials/CMake (fi)|CMake]]
}}
}}


==Lyhyesti==
==Lyhyesti==
Ensimmäisen ohjelmasi tulisi tervehtiä maailmaa "Hei Maailma!"-viestillä, vai mitä? Tätä tarkoitukseen käytämme {{class|KMessageBox}}-luokkaa, ja muokkaamme yhtä painonappia.
Ensimmäisen ohjelmasi tulisi tervehtiä maailmaa "Hei Maailma!"-viestillä, vai mitä? Tähän tarkoitukseen käytämme {{class|KMessageBox}}-luokkaa, ja muokkaamme yhtä painiketta.
[[image:introtokdetutorial1.png|frame|center]]
[[image:introtokdetutorial1.png|frame|center]]


{{tip|Konqueror tarjoaa nopean tavan hankkia lisätietoja mistä tahansa KDE:n luokasta. Esimerkiksi, jos haluat lisätietoja KMessageBox - luokasta, kirjoita Konquerorin osoitekenttään "kde:kmessagebox".}}
{{tip|Konqueror tarjoaa nopean tavan hankkia lisätietoja mistä tahansa KDE:n luokasta. Esimerkiksi jos haluat lisätietoja KMessageBox - luokasta, kirjoita Konquerorin osoitekenttään "kde:kmessagebox".}}


{{tip|[http://www.kdevelop.org KDevelop] on erinomainen IDE kehitettäessä KDE- ja Qt C++-sovelluksia. Se sisältää integroidun debuggerin, tehokkaan editorin syntaksikorostuksella, ''Projektivelho''n sovellusten luomiseksi mallinneista ja jopa luokkadokumentoinnit. Lisätietoja yksityiskohdista voi myös löytää  [http://kdevelop.org/mediawiki/index.php/Main_Page KDevelop wiki] sivustossa.
{{tip|[http://www.kdevelop.org KDevelop] on erinomainen IDE kehitettäessä KDE- ja Qt C++-sovelluksia. Se sisältää integroidun debuggerin, syntaksikorostuksen hallitsevan editorin, ''Projektivelho''n sovellusten luomiseksi mallinneista ja jopa luokkadokumentoinnit. Lisätietoja yksityiskohdista voi myös löytää  [http://kdevelop.org/mediawiki/index.php/Main_Page KDevelop wiki] -sivustossa.


Ohjeita siitä kuinka käyttää KDevelop-ohjelmaa KDE 4-sovellusten kanssa on saatavilla [[Getting_Started/Set_up_KDE_4_for_development#KDevelop|tällä sivulla]]
Ohjeita KDevelop-ohjelman käyttämisestä KDE 4-sovellusten kanssa löydät [[Getting_Started/Set_up_KDE_4_for_development#KDevelop|tältä sivulta]]


Silti sinun tarvitsee vielä muokata [[Development/Tutorials/CMake_(fi)|CMake]] tiedostot käsin.
Kuitenkin sinun pitää edelleen muokata [[Development/Tutorials/CMake_(fi)|CMake]] -tiedostoja käsin.
}}
}}


==Koodi==
==Koodi==
Kaikki tarvittava koodi voidaan sijoittaa yhteen tiedostoon. Luo tiedosto <tt>main.cpp</tt> ja kopioi alla oleva koodi siihen:
Kaikki tarvittava koodi voidaan sijoittaa yhteen tiedostoon. Luo tiedosto <tt>main.cpp</tt> ja kopioi alla oleva koodi siihen:
<code cppqt>
<syntaxhighlight lang="cpp-qt">
#include <KApplication>
#include <KApplication>
#include <KAboutData>
#include <KAboutData>
Line 43: Line 43:
                         KAboutData::License_GPL,      // Lisenssin tunniste
                         KAboutData::License_GPL,      // Lisenssin tunniste
                         ki18n("(c) 2007"),            // Tekijänoikeusmerkintä
                         ki18n("(c) 2007"),            // Tekijänoikeusmerkintä
                         ki18n("Some text..."),        // Vapaata tekstiä..
                         ki18n("Some text..."),        // Vapaata teksti&auml;..
                         "http://tutorial.com",        // Ohjelman kotisivu.
                         "http://tutorial.com",        // Ohjelman kotisivu.
                         "[email protected]");      // Sähköpostiosoite bugien raportoimista varten.
                         "[email protected]");      // Sähköpostiosoite bugien raportoimista varten.
Line 54: Line 54:
     KMessageBox::questionYesNo( 0, "Hello World", "Hello", guiItem );
     KMessageBox::questionYesNo( 0, "Hello World", "Hello", guiItem );
}
}
</code>
</syntaxhighlight>
Ensimmäinen KDE-luokka tässä ohjelmassa on {{class|KAboutData}}. Tämä luokka tallentaa ohjelman tiedot, kuten lyhyen kuvauksen, ylläpitäjätiedot, lisenssitiedot, jne. Lähestulkoon kaikissa KDE ohjelmissa tulisi olla tämä luokka.
Ensimm&auml;inen KDE-luokka t&auml;ss&auml; ohjelmassa on {{class|KAboutData}}. T&auml;m&auml; luokka tallentaa ohjelman tiedot, kuten lyhyen kuvauksen, yll&auml;pit&auml;j&auml;tiedot, lisenssitiedot, jne. L&auml;hestulkoon kaikissa KDE ohjelmissa tarvitaan tätä luokkaa.


Seuraavana on {{class|KCmdLineArgs}}. Tämän luokan tarkoituksena on määritellä komentorivin argumentit, esimerkiksi, avataksesi ohjelman tietyn tiedoston kanssa. Kuitenkin, tässä perehdytyksessä, me yksinkertaisesti alustamme sen {{class|KAboutData}} objektilla, jonka ensimmäisessä kohdassa loimme, jotta voimme käyttää <tt>--version</tt> tai <tt>--author</tt> kytkimiä.
Seuraavana on {{class|KCmdLineArgs}}. T&auml;m&auml;n luokan tarkoituksena on m&auml;&auml;ritell&auml; komentorivin argumentit, esimerkiksi, avataksesi ohjelman tietyn tiedoston kanssa. Kuitenkin t&auml;ss&auml; oppaassa me vain alustamme sen {{class|KAboutData}}-objektilla, jonka loimme ensimm&auml;isess&auml; kohdassa, jotta voimme k&auml;ytt&auml;&auml; <tt>--version</tt> tai <tt>--author</tt> kytkimi&auml;.


Kolmantena luomme {{class|KApplication}} objektin. This needs to be done exactly once in each program since it is needed for things such as [[Development/Tutorials/Localization/i18n|i18n]].
Kolmantena luomme {{class|KApplication}}-objektin. T&auml;m&auml; on tarpeellinen jokaisessa ohjelmassa, koska esim. [[Development/Tutorials/Localization/i18n|i18n]] tarvitsee sitä.


Kaikki KDE:n vaatimat asettelut on nyt tehty ja voimme siirtyä tekemään mielenkiintoisempia asioita ohjelmallemme. Seuraavana on tarkoitus luoda pop-up-ikkuna sekä muokata yhtä painonappia mieleiseksemme. Painonapin muokkauksessa käytämme {{class|KGuiItem}}-objektia. {{class|KGuiItem}}:n ensimmäinen parametri muodostajassa määrittelee painonapissa näytettävän tekstin. Seuraava parametri määrittelisi {{class|KGuiItem}}:n ikonin, joka tässä tapauksessa on jätetty tyhjäksi antamalla argumentiksi tt>QString()</tt>(tyhjä QString). Viimeisenä asetamme käytönaikaisen vihjeen (joka näytetään kun hiiren osoitin pysähtyy hetkeksi objektin päälle) sekä "Mikä tämä on?"-selvityksen(Näytetään hiiren oikean napin klikkauksen tai Shift-F1 kautta).
Kaikki KDE:n vaatimat asettelut on nyt tehty ja voimme siirty&auml; tekem&auml;&auml;n mielenkiintoisempia asioita ohjelmallemme. Seuraavana on tarkoitus luoda pop-up-ikkuna sek&auml; muokata yht&auml; painiketta mieleiseksemme. Painikkeen muokkauksessa k&auml;yt&auml;mme {{class|KGuiItem}}-objektia. {{class|KGuiItem}}:n ensimm&auml;inen parametri muodostajassa m&auml;&auml;rittelee painikkeen n&auml;ytett&auml;v&auml;n tekstin. Seuraava parametri m&auml;&auml;rittelisi {{class|KGuiItem}}:n kuvakkeen, joka t&auml;ss&auml; tapauksessa on j&auml;tetty tyhj&auml;ksi antamalla argumentiksi <tt>QString()</tt>(tyhj&auml; QString). Viimeisen&auml; asetamme k&auml;yt&ouml;naikaisen vihjeen (joka n&auml;ytet&auml;&auml;n kun hiiren osoitin pys&auml;htyy hetkeksi objektin p&auml;&auml;lle) sek&auml; "Mik&auml; t&auml;m&auml; on?"-selvityksen (N&auml;ytet&auml;&auml;n hiiren oikeaa painiketta napsauttamalla tai Vaihto + F1 -näppäinyhdistelmällä).


Painonappi on nyt valmis ja voimme luoda pop-up-ikkunan. Me kutsumme <tt>{{class|KMessageBox}}::questionYesNo()</tt>-funktiota tähän tarkoitukseen, joka oletuksena luo viesti-ikkunan varustettuna "Kyllä" ja "Ei" painonapeilla. Funktion toinen argumentti määrittelee tekstin jäka näytetään keskellä pop-up-laatikkoa. Kolmas argumentti kertoo funktiolle ikkunan nimen, ja viimeisenä kerromme että korvaamme "Yes"-painonapin luomallamme <tt>KGuiItem guiItem</tt> objektilla.
Painike on nyt valmis ja voimme tehdä pop-up-ikkunan. Me kutsumme <tt>{{class|KMessageBox}}::questionYesNo()</tt>-funktiota t&auml;h&auml;n tarkoitukseen, joka oletuksena luo viesti-ikkunan varustettuna "Kyll&auml;" ja "Ei" painikkeilla. Funktion toinen argumentti m&auml;&auml;rittelee tekstin j&auml;ka n&auml;ytet&auml;&auml;n keskell&auml; pop-up-laatikkoa. Kolmas argumentti kertoo funktiolle ikkunan nimen, ja viimeisen&auml; kerromme ett&auml; korvaamme "Yes"-painikkeeen luomallamme <tt>KGuiItem guiItem</tt> objektilla.


Nyt olemme käyneet koodin läpi vaihe vaiheelta ja valmiitä kokeilemaan kääntämistä ja ohjelman suoritusta.
Nyt olemme k&auml;yneet koodin l&auml;pi vaihe vaiheelta ja valmiit&auml; kokeilemaan k&auml;&auml;nt&auml;mist&auml; ja ohjelman suoritusta.


==Kääntäminen==
==K&auml;&auml;nt&auml;minen==
Jos olet asettanut ohjelmointiympäristösi kuten [[Getting Started/Build/KDE4]]:ssa on neuvottu voit kääntää koodin seuraavasti:
Jos olet asettanut ohjelmointiymp&auml;rist&ouml;si kuten [[Getting Started/Build/KDE4]]:ssa on neuvottu voit k&auml;&auml;nt&auml;&auml; koodin seuraavasti:
   
   
<code>
<syntaxhighlight lang="text">
  g++ main.cpp -o tutorial1 \
  g++ main.cpp -o tutorial1 \
  -I$QTDIR/include/Qt \
  -I$QTDIR/include/Qt \
Line 79: Line 79:
  -L$KDEDIR/lib \
  -L$KDEDIR/lib \
  -L$QTDIR/lib -lQtCore -lQtGui -lkdeui -lkdecore
  -L$QTDIR/lib -lQtCore -lQtGui -lkdeui -lkdecore
</code>
</syntaxhighlight>


Ja ohjelman käynnistys seuraavasti:
Ja ohjelman k&auml;ynnistys seuraavasti:
<code>
<syntaxhighlight lang="text">
  dbus-launch ./tutorial1
  dbus-launch ./tutorial1
</code>
</syntaxhighlight>


===CMaken käyttäminen===
===CMaken k&auml;ytt&auml;minen===
Jos edellinen käännös onnistui, voit kokeilla [[Development/Tutorials/CMake (fi)|CMaken]] käyttöä, kuten KDE 4 ympäristössä olisi tarkoitus. CMake automaattisesti etsii KDE:n, Qt:n, yms. kirjastot ja otsikkotiedostot sekä tekee ohjelmistojesi kääntämisen helpoksi muissakin järjestelmissä.
Jos edellinen k&auml;&auml;nn&ouml;s onnistui, voit kokeilla [[Development/Tutorials/CMake (fi)|CMaken]] k&auml;ytt&ouml;&auml;, kuten KDE 4 ymp&auml;rist&ouml;ss&auml; olisi tarkoitus. CMake automaattisesti etsii KDE:n, Qt:n, yms. kirjastot ja otsikkotiedostot sek&auml; tekee ohjelmistojesi k&auml;&auml;nt&auml;misen helpoksi muissakin j&auml;rjestelmiss&auml;.


====CMakeLists.txt====
====CMakeLists.txt====
Luo CMakeLists.txt-niminen tiedosto samaan hakemistoon jossa main.cpp sijaitsee ja kopioi alla oleva koodi siihen:
Luo CMakeLists.txt-niminen tiedosto samaan hakemistoon, jossa main.cpp sijaitsee ja kopioi alla oleva koodi siihen:
<code ini n>
<syntaxhighlight lang="ini" line>
project (tutorial1)
project (tutorial1)


Line 101: Line 101:
kde4_add_executable(tutorial1 ${tutorial1_SRCS})
kde4_add_executable(tutorial1 ${tutorial1_SRCS})
target_link_libraries(tutorial1 ${KDE4_KDEUI_LIBS})
target_link_libraries(tutorial1 ${KDE4_KDEUI_LIBS})
</code>
</syntaxhighlight>
<tt>find_package()</tt>-funktio etsii haluamasi paketin, tässä tapauksessa KDE4 sekä asettaa eräitä parametrejä jotka selvittävät paketin kirjastojen ja otsikkotiedostojen sijainnin. Tässä tapauksessa käytämme <tt>KDE4_INCLUDES</tt>-muuttujaa jossa on tieto KDE4:n otsikkotiedostojen sijainnista.
<tt>find_package()</tt>-funktio etsii haluamasi paketin, t&auml;ss&auml; tapauksessa KDE4 sek&auml; asettaa er&auml;it&auml; parametrej&auml;, jotka selvitt&auml;v&auml;t paketin kirjastojen ja otsikkotiedostojen sijainnin. T&auml;ss&auml; tapauksessa k&auml;yt&auml;mme <tt>KDE4_INCLUDES</tt>-muuttujaa, jossa on tieto KDE4:n otsikkotiedostojen sijainnista.


Jotta kääntäjä löytäisi nämä otsikkotiedostot, annamme tämän muuttujan <tt>include_directories()</tt>-funktiolle, joka lisää KDE4 otsikkotiedostot otsikkotiedostojen etsintäpolkuun.
Jotta k&auml;&auml;nt&auml;j&auml; l&ouml;yt&auml;isi n&auml;m&auml; otsikkotiedostot, annamme t&auml;m&auml;n muuttujan <tt>include_directories()</tt>-funktiolle, joka lis&auml;&auml; KDE4 otsikkotiedostot otsikkotiedostojen etsint&auml;polkuun.


Seuraavana luomme <tt>tutorial1_SRCS</tt>-nimisen muuttujan <tt>set()</tt>-funktiota apuna käyttäen. Muuttujan arvoksi tulee lähdekooditiedostomme nimi.
Seuraavana luomme <tt>tutorial1_SRCS</tt>-nimisen muuttujan <tt>set()</tt>-funktiota apuna k&auml;ytt&auml;en. Muuttujan arvoksi tulee l&auml;hdekooditiedostomme nimi.


<tt>kde4_add_executable()</tt>-funktiokutsun avulla luomme <tt>tutorial1</tt>-nimisen suoritettavan binäärin lähdekooditiedostoista jotka on määritelty <tt>tutorial1_SRCS</tt>-muuttujassa. Viimeisenä linkitämme suoritettavan binääritiedoston <tt>target_link_libraries()</tt>-funktiota sekä <tt>KDE4_KDEUI_LIBS</tt> muuttujia apuna käyttäen KDE4 kdeui-kirjastoon. <tt>KDE4_KDEUI_LIBS</tt> muuttuja luotiin myös <tt>find_package()</tt>-funktiossa.
<tt>kde4_add_executable()</tt>-funktiokutsun avulla luomme <tt>tutorial1</tt>-nimisen suoritettavan bin&auml;&auml;rin l&auml;hdekooditiedostoista, jotka on m&auml;&auml;ritelty <tt>tutorial1_SRCS</tt>-muuttujassa. Viimeisen&auml; linkit&auml;mme suoritettavan bin&auml;&auml;ritiedoston <tt>target_link_libraries()</tt>-funktiota sek&auml; <tt>KDE4_KDEUI_LIBS</tt> muuttujia apuna k&auml;ytt&auml;en KDE4 kdeui-kirjastoon. <tt>KDE4_KDEUI_LIBS</tt> muuttuja luotiin my&ouml;s <tt>find_package()</tt>-funktiossa.


====Käännös ja suoritus====
====K&auml;&auml;nn&ouml;s ja suoritus====
Edelleen, jos olet asettanut ohjelmointiympäristösi kuten [[Getting Started/Build/KDE4]]:ssa on neuvottu voit kääntää koodin seuraavasti:
Jos olet asettanut ohjelmointiymp&auml;rist&ouml;si, kuten oppaassa [[Getting Started/Build/KDE4]] on neuvottu, voit k&auml;&auml;nt&auml;&auml; koodin seuraavasti:
<code>
<syntaxhighlight lang="text">
cmakekde
cmakekde
</code>
</syntaxhighlight>


tai ellet, niin:
Muussa tapauksessa:
<code>
<syntaxhighlight lang="text">
mkdir build && cd build
mkdir build && cd build
cmake ..
cmake ..
make
make
</code>
</syntaxhighlight>


Ja suoritus:
Koodi suoritetaan:
<code>
<syntaxhighlight lang="text">
  ./tutorial1
  ./tutorial1
</code>
</syntaxhighlight>


==Moving On==
==Seuraavaksi==
Now you can move on to [[Development/Tutorials/Using_KXmlGuiWindow|using KXmlGuiWindow]].
Seuraavaksi voit jatkaa [[Development/Tutorials/Using_KXmlGuiWindow (fi)|Main-ikkunan luonti]] - perehdytykseen.


[[Category:C++]]
[[Category:C++]]

Latest revision as of 09:43, 15 July 2012

Perehdytys 1 - Hei Maailma!
Tutorial Series   Beginner Tutorial
Previous   C++, Qt, KDE4 development environment
What's Next   Perehdytys 2 - Main-ikkunan luonti
Further Reading   CMake

Lyhyesti

Ensimmäisen ohjelmasi tulisi tervehtiä maailmaa "Hei Maailma!"-viestillä, vai mitä? Tähän tarkoitukseen käytämme KMessageBox-luokkaa, ja muokkaamme yhtä painiketta.

Tip
Konqueror tarjoaa nopean tavan hankkia lisätietoja mistä tahansa KDE:n luokasta. Esimerkiksi jos haluat lisätietoja KMessageBox - luokasta, kirjoita Konquerorin osoitekenttään "kde:kmessagebox".


Tip
KDevelop on erinomainen IDE kehitettäessä KDE- ja Qt C++-sovelluksia. Se sisältää integroidun debuggerin, syntaksikorostuksen hallitsevan editorin, Projektivelhon sovellusten luomiseksi mallinneista ja jopa luokkadokumentoinnit. Lisätietoja yksityiskohdista voi myös löytää KDevelop wiki -sivustossa.

Ohjeita KDevelop-ohjelman käyttämisestä KDE 4-sovellusten kanssa löydät tältä sivulta

Kuitenkin sinun pitää edelleen muokata CMake -tiedostoja käsin.


Koodi

Kaikki tarvittava koodi voidaan sijoittaa yhteen tiedostoon. Luo tiedosto main.cpp ja kopioi alla oleva koodi siihen:

#include <KApplication>
#include <KAboutData>
#include <KCmdLineArgs>
#include <KMessageBox>

int main (int argc, char *argv[])
{
    KAboutData aboutData("tutorial1",                  // Ohjelman nimi järjestelmän käyttöön.
                         0,                            // Nimi viestiluetteluun, käytä ohjelmannimeä jos nolla.
                         ki18n("Tutorial 1"),          // Näytettävä ohjelman nimi.
                         "1.0",                        // Ohjelman versionumero. Merkkijono.
                         ki18n("KMessageBox popup"),   // Lyhyt kuvaus siitä mitä ohjelma tekee.
                         KAboutData::License_GPL,      // Lisenssin tunniste
                         ki18n("(c) 2007"),            // Tekijänoikeusmerkintä
                         ki18n("Some text..."),        // Vapaata teksti&auml;..
                         "http://tutorial.com",        // Ohjelman kotisivu.
                         "[email protected]");       // Sähköpostiosoite bugien raportoimista varten.

    KCmdLineArgs::init( argc, argv, &aboutData );
    KApplication app;
    KGuiItem guiItem( QString( "Hello" ), QString(),
                      QString( "this is a tooltip" ),
                      QString( "this is a whatsthis" ) );
    KMessageBox::questionYesNo( 0, "Hello World", "Hello", guiItem );
}

Ensimmäinen KDE-luokka tässä ohjelmassa on KAboutData. Tämä luokka tallentaa ohjelman tiedot, kuten lyhyen kuvauksen, ylläpitäjätiedot, lisenssitiedot, jne. Lähestulkoon kaikissa KDE ohjelmissa tarvitaan tätä luokkaa.

Seuraavana on KCmdLineArgs. Tämän luokan tarkoituksena on määritellä komentorivin argumentit, esimerkiksi, avataksesi ohjelman tietyn tiedoston kanssa. Kuitenkin tässä oppaassa me vain alustamme sen KAboutData-objektilla, jonka loimme ensimmäisessä kohdassa, jotta voimme käyttää --version tai --author kytkimiä.

Kolmantena luomme KApplication-objektin. Tämä on tarpeellinen jokaisessa ohjelmassa, koska esim. i18n tarvitsee sitä.

Kaikki KDE:n vaatimat asettelut on nyt tehty ja voimme siirtyä tekemään mielenkiintoisempia asioita ohjelmallemme. Seuraavana on tarkoitus luoda pop-up-ikkuna sekä muokata yhtä painiketta mieleiseksemme. Painikkeen muokkauksessa käytämme KGuiItem-objektia. KGuiItem:n ensimmäinen parametri muodostajassa määrittelee painikkeen näytettävän tekstin. Seuraava parametri määrittelisi KGuiItem:n kuvakkeen, joka tässä tapauksessa on jätetty tyhjäksi antamalla argumentiksi QString()(tyhjä QString). Viimeisenä asetamme käytönaikaisen vihjeen (joka näytetään kun hiiren osoitin pysähtyy hetkeksi objektin päälle) sekä "Mikä tämä on?"-selvityksen (Näytetään hiiren oikeaa painiketta napsauttamalla tai Vaihto + F1 -näppäinyhdistelmällä).

Painike on nyt valmis ja voimme tehdä pop-up-ikkunan. Me kutsumme KMessageBox::questionYesNo()-funktiota tähän tarkoitukseen, joka oletuksena luo viesti-ikkunan varustettuna "Kyllä" ja "Ei" painikkeilla. Funktion toinen argumentti määrittelee tekstin jäka näytetään keskellä pop-up-laatikkoa. Kolmas argumentti kertoo funktiolle ikkunan nimen, ja viimeisenä kerromme että korvaamme "Yes"-painikkeeen luomallamme KGuiItem guiItem objektilla.

Nyt olemme käyneet koodin läpi vaihe vaiheelta ja valmiitä kokeilemaan kääntämistä ja ohjelman suoritusta.

Kääntäminen

Jos olet asettanut ohjelmointiympäristösi kuten Getting Started/Build/KDE4:ssa on neuvottu voit kääntää koodin seuraavasti:

 g++ main.cpp -o tutorial1 \
 -I$QTDIR/include/Qt \
 -I$QTDIR/include/QtCore \
 -I$QTDIR/include \
 -I$KDEDIR/include/KDE \
 -I$KDEDIR/include \
 -L$KDEDIR/lib \
 -L$QTDIR/lib -lQtCore -lQtGui -lkdeui -lkdecore

Ja ohjelman käynnistys seuraavasti:

 dbus-launch ./tutorial1

CMaken käyttäminen

Jos edellinen käännös onnistui, voit kokeilla CMaken käyttöä, kuten KDE 4 ympäristössä olisi tarkoitus. CMake automaattisesti etsii KDE:n, Qt:n, yms. kirjastot ja otsikkotiedostot sekä tekee ohjelmistojesi kääntämisen helpoksi muissakin järjestelmissä.

CMakeLists.txt

Luo CMakeLists.txt-niminen tiedosto samaan hakemistoon, jossa main.cpp sijaitsee ja kopioi alla oleva koodi siihen:

project (tutorial1)

find_package(KDE4 REQUIRED)
include_directories(${KDE4_INCLUDES})

set(tutorial1_SRCS main.cpp)

kde4_add_executable(tutorial1 ${tutorial1_SRCS})
target_link_libraries(tutorial1 ${KDE4_KDEUI_LIBS})

find_package()-funktio etsii haluamasi paketin, tässä tapauksessa KDE4 sekä asettaa eräitä parametrejä, jotka selvittävät paketin kirjastojen ja otsikkotiedostojen sijainnin. Tässä tapauksessa käytämme KDE4_INCLUDES-muuttujaa, jossa on tieto KDE4:n otsikkotiedostojen sijainnista.

Jotta kääntäjä löytäisi nämä otsikkotiedostot, annamme tämän muuttujan include_directories()-funktiolle, joka lisää KDE4 otsikkotiedostot otsikkotiedostojen etsintäpolkuun.

Seuraavana luomme tutorial1_SRCS-nimisen muuttujan set()-funktiota apuna käyttäen. Muuttujan arvoksi tulee lähdekooditiedostomme nimi.

kde4_add_executable()-funktiokutsun avulla luomme tutorial1-nimisen suoritettavan binäärin lähdekooditiedostoista, jotka on määritelty tutorial1_SRCS-muuttujassa. Viimeisenä linkitämme suoritettavan binääritiedoston target_link_libraries()-funktiota sekä KDE4_KDEUI_LIBS muuttujia apuna käyttäen KDE4 kdeui-kirjastoon. KDE4_KDEUI_LIBS muuttuja luotiin myös find_package()-funktiossa.

Käännös ja suoritus

Jos olet asettanut ohjelmointiympäristösi, kuten oppaassa Getting Started/Build/KDE4 on neuvottu, voit kääntää koodin seuraavasti:

cmakekde

Muussa tapauksessa:

mkdir build && cd build
cmake ..
make

Koodi suoritetaan:

 ./tutorial1

Seuraavaksi

Seuraavaksi voit jatkaa Main-ikkunan luonti - perehdytykseen.