Development/Tutorials/CMake (fi): Difference between revisions
No edit summary |
|||
(4 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
== Esipuhe == | == Esipuhe == | ||
CMake tuottaa ohjaustiedostot järjestelmän omalle kääntäjälle omien komentotiedostojensa avulla. Se voi luoda GNU Makefilet, KDevelop-projektitiedostot, XCode-projektitiedostot | CMake tuottaa ohjaustiedostot järjestelmän omalle kääntäjälle omien komentotiedostojensa avulla. Se voi luoda GNU Makefilet, KDevelop-projektitiedostot, XCode-projektitiedostot sekä Visual Studio-projektitiedostot. | ||
CMake on vapaan lähdekoodin ohjelmisto joka on julkaistu BSD-tyylisen lisenssin alaisena. CMaken ylläpitäjä on [http://www.kitware.com/ Kitware Inc.] | CMake on vapaan lähdekoodin ohjelmisto joka on julkaistu BSD-tyylisen lisenssin alaisena. CMaken ylläpitäjä on [http://www.kitware.com/ Kitware Inc.] | ||
Näistä voit aloittaa CMaken perusteiden opiskelun (englanniksi): | Näistä voit aloittaa CMaken perusteiden opiskelun (englanniksi): | ||
* [http://www.cmake.org/HTML/Documentation.html CMake | * [http://www.cmake.org/HTML/Documentation.html CMake-ohjekirja] | ||
* [http://www.cmake.org/Wiki/CMake CMake Wiki] | * [http://www.cmake.org/Wiki/CMake CMake Wiki] | ||
* [http://www.cmake.org/Wiki/CMake_HowToDoPlatformChecks CMake | * [http://www.cmake.org/Wiki/CMake_HowToDoPlatformChecks CMake – järjestelmän tarkistukset] | ||
* [http://www.cmake.org/Wiki/CMake_HowToFindInstalledSoftware CMake | * [http://www.cmake.org/Wiki/CMake_HowToFindInstalledSoftware CMake – kuinka löytää asennetut ohjelmat] | ||
* [http://www.cmake.org/Wiki/HowToBuildKDE4Software KDE 4 | * [http://www.cmake.org/Wiki/HowToBuildKDE4Software KDE 4 -perehdytys CMake Wikissä] | ||
* [http://www.cmake.org/Wiki/CMake_FAQ CMake FAQ] | * [http://www.cmake.org/Wiki/CMake_FAQ CMake FAQ] | ||
* [http://mail.kde.org/pipermail/kde-buildsystem/ Kde-buildsystem - | * [http://mail.kde.org/pipermail/kde-buildsystem/ Kde-buildsystem -postituslistan arkisto] | ||
Voit myös liittyä CMake [http://www.cmake.org/mailman/listinfo/cmake postituslistalle]. | Voit myös liittyä CMake-[http://www.cmake.org/mailman/listinfo/cmake postituslistalle]. | ||
== Miksi käyttää CMakea ? == | == Miksi käyttää CMakea? == | ||
Maaliskuussa 2006 päätettiin valita CMake KDE 4 julkaisun viralliseksi työkaluksi, pääsääntöisesti sen teknisten ominaisuuksien vuoksi verrattuna | Maaliskuussa 2006 päätettiin valita CMake KDE 4 julkaisun viralliseksi työkaluksi, pääsääntöisesti sen teknisten ominaisuuksien vuoksi verrattuna vanhempiin KDE työkaluihin kuten automake ja unsermake: | ||
* CMake on kehitetty KDE:stä riippumattomana, ja sitä voidaan käyttää myös muissa projekteissa | * CMake on kehitetty KDE:stä riippumattomana, ja sitä voidaan käyttää myös muissa projekteissa | ||
Line 32: | Line 31: | ||
Pura ja käännä: | Pura ja käännä: | ||
< | <syntaxhighlight lang="text"> | ||
$ mkdir cmake-build | $ mkdir cmake-build | ||
$ cd cmake-build | $ cd cmake-build | ||
Line 38: | Line 37: | ||
$ make | $ make | ||
$ make install | $ make install | ||
</ | </syntaxhighlight> | ||
Oletuksena ylläoleva asentaa CMaken /usr/local, joten varmista että /usr/local/bin on määritelty polussa. Vaihtaaksesi asennushakemistoa (esim. /usr debianissa), lisää '--prefix=PATH' valitsin bootstrap komentoon. (Esim: '''$ ../bootstrap --prefix=/usr''') | Oletuksena ylläoleva asentaa CMaken /usr/local -puuhun, joten varmista että /usr/local/bin on määritelty polussa. Vaihtaaksesi asennushakemistoa (esim. /usr debianissa), lisää '--prefix=PATH' valitsin bootstrap-komentoon. (Esim: '''$ ../bootstrap --prefix=/usr''') | ||
Jos haluat asentaa viimeisimmän kehitysversion, seuraa ohjeita [http://cmake.org/HTML/Download.html#cvs täältä]. | Jos haluat asentaa viimeisimmän kehitysversion, seuraa ohjeita [http://cmake.org/HTML/Download.html#cvs täältä]. | ||
Line 57: | Line 56: | ||
==== Linux, BSD, sekä muut Unix Järjestelmät ==== | ==== Linux, BSD, sekä muut Unix Järjestelmät ==== | ||
Luodaksesi järjestelmällesi käännöstiedostot(Makefile) tarvitsee | Luodaksesi järjestelmällesi käännöstiedostot (Makefile) sinun tarvitsee ajaa CMake. CMake tukee käännöksiä sekä lähdekoodin seassa että sen ulkopuolella, mutta tällä hetkellä lähdekoodin seassa kääntäminen on estetty KDE:n toteutuksessa. | ||
Esikerkiksi, jos kdelibs/ sijaitsee ~/src hakemistossa niin kääntäminen menee seuraavasti: | Esikerkiksi, jos kdelibs/ sijaitsee ~/src hakemistossa niin kääntäminen menee seuraavasti: | ||
< | <syntaxhighlight lang="text"> | ||
$ ls | $ ls | ||
kdelibs/ | kdelibs/ | ||
Line 67: | Line 66: | ||
$ cd kdelibs-build | $ cd kdelibs-build | ||
$ cmake ../kdelibs | $ cmake ../kdelibs | ||
</ | </syntaxhighlight> | ||
Ylläoleva tuottaa Makefilet kdelibs/ tiedostojen kääntämiseksi kdelibs-build/ hakemistoon. | Ylläoleva tuottaa Makefilet kdelibs/ -tiedostojen kääntämiseksi kdelibs-build/ hakemistoon. | ||
==== Windows ==== | ==== Windows ==== | ||
Luodaksesi järjestelmällesi käännöstiedostot(Makefile) tarvitsee | Luodaksesi järjestelmällesi käännöstiedostot (Makefile) sinun tarvitsee ajaa CMake. CMake tukee käännöksiä sekä lähdekoodin seassa että sen ulkopuolella, mutta tällä hetkellä lähdekoodin seassa kääntäminen on estetty KDE:n toteutuksessa. | ||
Esimerkiksi, jos kdelibs/ sijaitsee c:\data\kde4 hakemistossa, niin kääntäminen tehdään seuraavasti: | |||
< | <syntaxhighlight lang="text"> | ||
c:\daten\kde4> cd kdelibs\win | c:\daten\kde4> cd kdelibs\win | ||
c:\daten\kde4> cmake | c:\daten\kde4> cmake | ||
Line 86: | Line 85: | ||
c:\daten\kde4> cd kdelibs-build | c:\daten\kde4> cd kdelibs-build | ||
c:\daten\kde4\kdelibs-build> cmake ..\kdelibs | c:\daten\kde4\kdelibs-build> cmake ..\kdelibs | ||
</ | </syntaxhighlight> | ||
Ylläoleva tuottaa Makefilet kdelibs/ tiedostojen kääntämiseksi kdelibs-build/ hakemistoon. Lisätietoja KDE:n kääntämisestä Windows ympäristössä löytyy [http://techbase.kde.org/index.php?title=Projects/KDE_on_Windows täältä]. | Ylläoleva tuottaa Makefilet kdelibs/ -tiedostojen kääntämiseksi kdelibs-build/ -hakemistoon. Lisätietoja KDE:n kääntämisestä Windows ympäristössä löytyy [http://techbase.kde.org/index.php?title=Projects/KDE_on_Windows täältä]. | ||
==== KDevelop Project Files ==== | ==== KDevelop Project Files ==== | ||
Jos haluat luoda projektitiedostot KDevelopille(Makefile tiedostot sekä muutamia | Jos haluat luoda projektitiedostot KDevelopille (Makefile-tiedostot sekä muutamia KDevelopin vaatimia lisätiedostoja), suorita CMake seuraavasti: | ||
< | <syntaxhighlight lang="text"> | ||
$ cmake ../kdelibs -GKDevelop3 | $ cmake ../kdelibs -GKDevelop3 | ||
</ | </syntaxhighlight> | ||
'cmake -h' näyttää muut CMakessa tuetut valitsimet. | 'cmake -h' näyttää muut CMakessa tuetut valitsimet. | ||
Line 102: | Line 101: | ||
==== CMake ja Qt4 ==== | ==== CMake ja Qt4 ==== | ||
Paikallistaakseen QT 4 kirjaston | Paikallistaakseen QT 4 kirjaston CMake etsii qmakea polusta. CMake ei hyödynnä QTDIR-ympäristömuuttujaa, joten varmista että oikea qmake löytyy ensimmäisenä polkumuuttujasta. | ||
Line 109: | Line 108: | ||
Kun CMaken suoritus on valmis, on CMake luonut tiedoston nimeltä "CMakeCache.txt". Tämä tiedosto sisältää kaikki asetukset jotka CMake on tunnistanut järjestelmästäsi. Jos haluat suorittaa CMaken tuottaaksesi käännöstiedostot toiseen käännösympäristöön, tai haluat että asetukset tutkitaan uudelleen, poista tämä tiedosto. | Kun CMaken suoritus on valmis, on CMake luonut tiedoston nimeltä "CMakeCache.txt". Tämä tiedosto sisältää kaikki asetukset jotka CMake on tunnistanut järjestelmästäsi. Jos haluat suorittaa CMaken tuottaaksesi käännöstiedostot toiseen käännösympäristöön, tai haluat että asetukset tutkitaan uudelleen, poista tämä tiedosto. | ||
Jos CMake ei löydä jotain, mutta olet varma että se on järjestelmässäsi, on mahdollista käsin kertoa CMakelle mistä etsiä. CMake käyttää apunaan muuttujia johon tämä tieto tallennetaan. Muuttujat on varastoitu "CMakeCache.txt" tiedostoon. Muuttujien määrittelemiseksi käsin on kolme vaihtoehtoa: | Jos CMake ei löydä jotain, mutta olet varma että se on järjestelmässäsi, on mahdollista käsin kertoa CMakelle mistä etsiä. CMake käyttää apunaan muuttujia johon tämä tieto tallennetaan. Muuttujat on varastoitu "CMakeCache.txt" -tiedostoon. Muuttujien määrittelemiseksi käsin on kolme vaihtoehtoa: | ||
* Komentoriviltä: '''cmake ../kdelibs -DMUUTTUJAN_NIMI=arvo''' | * Komentoriviltä: '''cmake ../kdelibs -DMUUTTUJAN_NIMI=arvo''' | ||
* Merkkipohjainen ccmake käyttöliittymä (suorita: '''ccmake ../kdelibs''') | * Merkkipohjainen ccmake-käyttöliittymä (suorita: '''ccmake ../kdelibs''') | ||
* Muokkaamalla CMakeCache.txt tiedostoa (ei | * Muokkaamalla CMakeCache.txt -tiedostoa (ei suositella) | ||
Kannattaa suorittaa "ccmake ../kdelibs" ainakin kerran jotta saat kokonaiskuvan kaikista niistä muuttujista | Kannattaa suorittaa "ccmake ../kdelibs" ainakin kerran, jotta saat kokonaiskuvan kaikista niistä muuttujista, joita CMake käyttää. Ohjelmassa paina "T" nähdäksesi myös laajennetut muuttujat. Jos CMake ei siis löydä jotain, käynnistä ccmake ja aseta se käsin. | ||
==== | ==== Komentorivimuuttujat ==== | ||
Muutamia cmake:n komentorivillä annettavia muuttujia joita saatat haluta muuttaa: | Muutamia cmake:n komentorivillä annettavia muuttujia joita saatat haluta muuttaa: | ||
* '''CMAKE_INSTALL_PREFIX:''' cmake ../kdelibs -DCMAKE_INSTALL_PREFIX=/opt/kde4 on vastaava ./configure --prefix=/opt/kde4 | * '''CMAKE_INSTALL_PREFIX:''' cmake ../kdelibs -DCMAKE_INSTALL_PREFIX=/opt/kde4 on vastaava kuin ./configure --prefix=/opt/kde4 | ||
* '''CMAKE_BUILD_TYPE:''' määrittelee käännöstyypin. Vaihtoehdot: "debugfull", "debug", "profile", "relwithdebinfo" ja "release". Oletuksena "relwithdebinfo" (-O2 -g). Katso lisätietoja: FindKDE4Internal. | * '''CMAKE_BUILD_TYPE:''' määrittelee käännöstyypin. Vaihtoehdot: "debugfull", "debug", "profile", "relwithdebinfo" ja "release". Oletuksena "relwithdebinfo" (-O2 -g). Katso lisätietoja: FindKDE4Internal. | ||
* '''KDE4_BUILD_TESTS=ON:''' Luo Makefilet testiohjelmien kanssa jotka myös tuottavat | * '''KDE4_BUILD_TESTS=ON:''' Luo Makefilet testiohjelmien kanssa jotka myös tuottavat testikäännökset | ||
* '''KDE4_TEST_OUTPUT=xml:''' Luo yksikkötesteistä | * '''KDE4_TEST_OUTPUT=xml:''' Luo yksikkötesteistä XML-muotoiset lokitiedostot QTestLib:ä käyttäen. | ||
* '''KDE4_DISABLE_MULTIMEDIA=ON:''' Kääntää KDE:n ilman | * '''KDE4_DISABLE_MULTIMEDIA=ON:''' Kääntää KDE:n ilman multimediatuka (ääni ja video). | ||
* '''RPATH_STYLE:''' Ei enää | * '''RPATH_STYLE:''' Ei enää valittavissa. Oletuksena kaikki käännetään oikein asetetun RPATH:n kanssa. Jos et halua käyttää lainkaan RPATH:a, aseta '''CMAKE_SKIP_RPATH=TRUE'''. | ||
* '''BUILD_foo=OFF:''' Jättää 'foo' | * '''BUILD_foo=OFF:''' Jättää hakemiston 'foo' kääntämättä. | ||
* '''WITH_foo:''' Tähän on useita vaihtoehtoja, esim: WITH_CUPS tai WITH_Jasper. Jos poissuljet(=OFF), cmake ei edes yritä etsiä näitä. Jos on valittu, cmake yrittää etsiä näitä. Jos haku epäonnistuu, voit silti määritellä sijainnin käsin | * '''WITH_foo:''' Tähän on useita vaihtoehtoja, esim: WITH_CUPS tai WITH_Jasper. Jos poissuljet (=OFF), cmake ei edes yritä etsiä näitä. Jos on valittu, cmake yrittää etsiä näitä. Jos haku epäonnistuu, voit silti määritellä sijainnin käsin, kuten aikaisemmin neuvottiin. | ||
==== Ympäristömuuttujat ==== | ==== Ympäristömuuttujat ==== | ||
Line 137: | Line 136: | ||
* '''CMAKE_LIBRARY_PATH''', eg. export CMAKE_LIBRARY_PATH=/sw/lib | * '''CMAKE_LIBRARY_PATH''', eg. export CMAKE_LIBRARY_PATH=/sw/lib | ||
Lisätietoja muuttujista | Lisätietoja muuttujista: katso [http://www.cmake.org/Wiki/CMake_Useful_Variables cmake.org -wikisivu]. | ||
==== Seuraavaksi ==== | ==== Seuraavaksi ==== | ||
Jos cmake:n suoritus päättyy ilmoitukseen "Generating done", ei virheitä | Jos cmake:n suoritus päättyy ilmoitukseen "Generating done", ei virheitä ilmennyt. Nyt voit suorittaa käännöksen normaaliin tapaan (make, KDevelop, XCode tai MSVC). Käännöksen jälkeen asennus normaalisti, esim. "make install" | ||
Jos suoritus päättyy ilmoitukseen "Configuring done", on ilmennyt joitain virheitä jotka pitää selvittää. | Jos suoritus päättyy ilmoitukseen "Configuring done", on ilmennyt joitain virheitä jotka pitää selvittää. | ||
Jos sait virheilmoituksen jossa kerrotaan | Jos sait virheilmoituksen jossa kerrotaan seuraavan kaltaista: | ||
< | <syntaxhighlight lang="text"> | ||
CMake Error: This project requires some variables to be set, | CMake Error: This project requires some variables to be set, | ||
and cmake can not find them. | and cmake can not find them. | ||
Please set the following variables: | Please set the following variables: | ||
X11_XTest_LIB (ADVANCED) | X11_XTest_LIB (ADVANCED) | ||
</ | </syntaxhighlight> | ||
niin luultavammin jotakin kirjastoa (tai muuta riippuvuutta) ei löytynyt. Selvittääksesi mikä kirjasto on kyseessä, etsi cmake/modules hakemistosta muuttujaa jota cmake ei löytänyt. Tässä esimerkissä se on | |||
< | <syntaxhighlight lang="text"> | ||
FIND_LIBRARY(X11_XTest_LIB Xtst ${X11_LIB_SEARCH_PATH}) | FIND_LIBRARY(X11_XTest_LIB Xtst ${X11_LIB_SEARCH_PATH}) | ||
</ | </syntaxhighlight> | ||
Joten puuttuva tai epänormaaliin sijaintiin asennettu kirjasto on Xtst. Kirjaston asentamisen jälkeen suorita uudelleen cmake. | Joten puuttuva tai epänormaaliin sijaintiin asennettu kirjasto on Xtst. Kirjaston asentamisen jälkeen suorita uudelleen cmake. | ||
Line 163: | Line 162: | ||
== CMaken käyttö yksinkertaisessa sovelluksessa == | == CMaken käyttö yksinkertaisessa sovelluksessa == | ||
Yksinkertaisin toimiva CMakeLists.txt: | |||
< | <syntaxhighlight lang="text"> | ||
add_executable(hello main.cpp) | add_executable(hello main.cpp) | ||
</ | </syntaxhighlight> | ||
Tämä tuottaa main.cpp lähdekooditiedostosta suoritettavan ohjelman nimeltä "hello" (tai "hello.exe" Windowsissa). Voit käyttää samanaikaisesti sekä C attä C++ tiedostoja. Voit sijoittaa useampia suoritettavia binäärejä tai kirjastoja samaan CMakeLists.txt tiedostoon. Samaa lähdekooditiedostoa voidaan käyttää useamman binäärin kääntämiseen ja se käännetään jokaista binääriä kohden erikseen riippumatta muista binääreistä. | Tämä tuottaa main.cpp -lähdekooditiedostosta suoritettavan ohjelman nimeltä "hello" (tai "hello.exe" Windowsissa). Voit käyttää samanaikaisesti sekä C- attä C++-tiedostoja. Voit sijoittaa useampia suoritettavia binäärejä tai kirjastoja samaan CMakeLists.txt tiedostoon. Samaa lähdekooditiedostoa voidaan käyttää useamman binäärin kääntämiseen ja se käännetään jokaista binääriä kohden erikseen riippumatta muista binääreistä. CMake-komentokielen tärkein osa lienevät muuttujat: | ||
< | <syntaxhighlight lang="text"> | ||
SET( MY_SOURCES main.cpp widget.cpp) | SET( MY_SOURCES main.cpp widget.cpp) | ||
MESSAGE(STATUS "my sources: ${MY_SOURCES}") | MESSAGE(STATUS "my sources: ${MY_SOURCES}") | ||
</ | </syntaxhighlight> | ||
SET() komennolla voit asettaa muuttujalle arvon. Jos asetat arvoksi useamman merkkijonon, muutujan tyypiksi tulee lista. Lista on puolipisteillä eroteltu merkkijonojen luettelo. Saadaksesi muuttujan arvon käytä $(MUUTTUJA). Listan voit iteroida seuraavasti: | SET() -komennolla voit asettaa muuttujalle arvon. Jos asetat arvoksi useamman merkkijonon, muutujan tyypiksi tulee lista. Lista on puolipisteillä eroteltu merkkijonojen luettelo. Saadaksesi muuttujan arvon käytä muotoa $(MUUTTUJA). Listan voit iteroida seuraavasti: | ||
< | <syntaxhighlight lang="text"> | ||
FOREACH(): | FOREACH(): | ||
Line 183: | Line 182: | ||
MESSAGE(STATUS "next item: ${next_ITEM}") | MESSAGE(STATUS "next item: ${next_ITEM}") | ||
ENDFOREACH(next_ITEM ${MY_SOURCES}) | ENDFOREACH(next_ITEM ${MY_SOURCES}) | ||
</ | </syntaxhighlight> | ||
CMaken komennoissa, muuttujien nimissä ja muuttujien parametreissä on huomioitava kirjainkoko | CMaken komennoissa, muuttujien nimissä ja muuttujien parametreissä on huomioitava kirjainkoko (a != A). | ||
Voit myös testata | Voit myös testata ehtoja: | ||
< | <syntaxhighlight lang="text"> | ||
IF (UNIX) | IF (UNIX) | ||
MESSAGE(STATUS "This is UNIX (including OS X and CygWin)") | MESSAGE(STATUS "This is UNIX (including OS X and CygWin)") | ||
Line 197: | Line 196: | ||
SET(MY_SRCS ${MY_SRCS} winextra.cpp) | SET(MY_SRCS ${MY_SRCS} winextra.cpp) | ||
ENDIF (MSVC) | ENDIF (MSVC) | ||
</ | </syntaxhighlight> | ||
Jälkimmäisessä esimerkissä näytetään myös miten lisätä listaan merkkijono. | Jälkimmäisessä esimerkissä näytetään myös miten lisätään listaan merkkijono. | ||
Suositeltavaa lukemista on CMake Wikissä perehdytys "[http://www.cmake.org/Wiki/HowToBuildKDE4Software Kuinka käännän KDE 4 -ohjelmistoja]". | |||
== CMaken käyttö KDE | == CMaken käyttö KDE-projektissa == | ||
Seuraavasa on perus-CMakeList-tiedosto, jolla voi kääntää KDE 4 -projektin: | |||
< | <syntaxhighlight lang="text"> | ||
PROJECT(kde4project) | PROJECT(kde4project) | ||
FIND_PACKAGE(KDE4 REQUIRED) | FIND_PACKAGE(KDE4 REQUIRED) | ||
Line 218: | Line 217: | ||
TARGET_LINK_LIBRARIES(kde4project ${KDE4_KDEUI_LIBS} ${KDE4_KPARTS_LIBS} ) | TARGET_LINK_LIBRARIES(kde4project ${KDE4_KDEUI_LIBS} ${KDE4_KPARTS_LIBS} ) | ||
</ | </syntaxhighlight> | ||
Muuttujat, makrot ja muuta KDE:ä koskevaa hyödyllistä tietoa löytyy [[Development/KDE | Muuttujat, makrot ja muuta KDE:ä koskevaa hyödyllistä tietoa löytyy [[Development/CMake/Addons for KDE]] -sivulta. | ||
== CMaken | == CMaken laajentaminen == | ||
CMakea voi laajentaa käyttämällä cmake komentojonoja. CMaken mukana tulee useita valmiita komentojonoja. UNIX pohjaisissa järjestelmissä ne on | CMakea voi laajentaa käyttämällä cmake-komentojonoja. CMaken mukana tulee useita valmiita komentojonoja. UNIX-pohjaisissa järjestelmissä ne on asennettu oletuksena /usr/local/share/CMake/Modules -hakemistoon (riippuen CMaken asennushakemistosta). KDE-kirjastot asentavat myös joukon cmake-laajennuksia share/apps/cmake/modules/ -hakemistoon. KDE:n hakemistossa sijaitsevat laajennukset ohittavat järjestelmänlaajuiset cmaken laajennukset. Ohjelmapakettien etsimistä varten täällä on FindFOO.cmake tiedostot, katso lisätietoja [http://www.cmake.org/Wiki/CMake_HowToFindInstalledSoftware täältä]. CMaken kanssa on myös mahdollista käyttää makroja, jotka ovat käyttökelpoisia useimpiin tilanteisiin joita ohjelmien kääntämisessä tarvitaan. | ||
== autotools-pohjaisen KDE ohjelmiston kääntäminen CMakelle == | == autotools-pohjaisen KDE-ohjelmiston kääntäminen CMakelle == | ||
Hakemistossa kdesdk/cmake/ on tiedosto nimeltään am2cmake. | Hakemistossa kdesdk/cmake/ on tiedosto nimeltään am2cmake. am2cmake on ruby-skripti, joten ruby tulee olla asennettu. Suorita am2cmake lähdekoodin päähakemistossa: | ||
< | <syntaxhighlight lang="text"> | ||
$ cd src/mykooltool/ | $ cd src/mykooltool/ | ||
$ am2cmake --kde4 | $ am2cmake --kde4 | ||
</ | </syntaxhighlight> | ||
Älä unohda "--kde4" - valitsinta, muuten am2cmake ei tuota KDE 4 ohjelmistoille sopivia tiedostoja. Käännetyt tiedostot 'voivat' toimia sellaisenaan kääntämisen jälkeen, mutta monimutkaisemmat projektit yleensä vaativat lisämuokkauksia. | Älä unohda "--kde4" - valitsinta, muuten am2cmake ei tuota KDE 4 -ohjelmistoille sopivia tiedostoja. Käännetyt tiedostot 'voivat' toimia sellaisenaan kääntämisen jälkeen, mutta monimutkaisemmat projektit yleensä vaativat lisämuokkauksia. | ||
Saatat joutua: | Saatat joutua: | ||
Line 242: | Line 241: | ||
* lisäämään linkkejä kirjastoihin, käyttäen TARGET_LINK_LIBRARIES() | * lisäämään linkkejä kirjastoihin, käyttäen TARGET_LINK_LIBRARIES() | ||
* lisäämään joitain määrittelyjä kääntäjälle, käyttäen ADD_DEFINITIONS() | * lisäämään joitain määrittelyjä kääntäjälle, käyttäen ADD_DEFINITIONS() | ||
* lisäämään tarkistuksia. Katso [[http://www.cmake.org/Wiki/CMake_HowToDoPlatformChecks Kuinka Tehdä Ympäristö Tarkistuksia] sekä [http://www.cmake.org/Wiki/CMake_HowToFindInstalledSoftware Kuinka | * lisäämään tarkistuksia. Katso [[http://www.cmake.org/Wiki/CMake_HowToDoPlatformChecks Kuinka Tehdä Ympäristö Tarkistuksia] sekä [http://www.cmake.org/Wiki/CMake_HowToFindInstalledSoftware Kuinka löytää asennettuja ohjelmia] | ||
* huolehtimaan libtool-yhteensopivista kirjastoista. Ne eivät ole tuettuina cmakessa, sen sijaan on ConvenienceLibs.cmake. Tästä tiedostosta löydät jokaiselle | * huolehtimaan libtool-yhteensopivista kirjastoista. Ne eivät ole tuettuina cmakessa, sen sijaan on ConvenienceLibs.cmake. Tästä tiedostosta löydät jokaiselle yhteensopivuuskirjastolle muuttujan, joka sisältää kaikki kyseisen yhteensopivuustiedoston lähteet. | ||
* am2cmake luo tiedoston nimeltä AdditionalInfo.txt. Tässä tiedostossa on lueteltu kaikki *.in ja *.in.in tiedostot kyseisestä projektista. Näissä tiedostoissa olevat asiat pitää kääntää käsin CMakelle. | * am2cmake luo tiedoston nimeltä AdditionalInfo.txt. Tässä tiedostossa on lueteltu kaikki *.in ja *.in.in tiedostot kyseisestä projektista. Näissä tiedostoissa olevat asiat pitää kääntää käsin CMakelle. | ||
== Usein | == Usein kysyttyjä kysymyksiä == | ||
=== Kuinka voin opettaa käyttämälleni tekstieditorille CMaken syntaksin ja sisennykset ? === | === Kuinka voin opettaa käyttämälleni tekstieditorille CMaken syntaksin ja sisennykset? === | ||
CMake Wikin osiossa [http://www.cmake.org/Wiki/CMake_Editors_Support CMake Editors Support] on ohjeet Emacs- (myös XEmacs), VIM-, Kate-, KWrite- sekä KDevelop-editoreille. | |||
=== Käännöksen aikana pitäisi luoda eräitä tiedostoja. Kuinka ne tehdään ? === | === Käännöksen aikana pitäisi luoda eräitä tiedostoja. Kuinka ne tehdään? === | ||
Käytä: ADD_CUSTOM_COMMAND(). Sen toiminta on selitetty CMake | Käytä: ADD_CUSTOM_COMMAND(). Sen toiminta on selitetty CMake Wikissä: [http://www.cmake.org/Wiki/CMake_FAQ#How_can_I_generate_a_source_file_during_the_build.3F Kuinka luon lähdetiedoston käännön aikana] | ||
=== Minun pitäisi kääntää ohjelma jota käytetään myöhemmin käännöstyössä luomaan tiedostoja. Kuinka tämä tehdään ? === | === Minun pitäisi kääntää ohjelma jota käytetään myöhemmin käännöstyössä luomaan tiedostoja. Kuinka tämä tehdään? === | ||
Oletetaan, että luotavan ohjelman nimi on genembed. Käytä KDE4_ADD_EXECUTABLE(foo RUN_UNINSTALLED ${fooSources}) luodaksesi käynnistettävän binäärin. RUN_UNINSTALLED on tärkeä, koska ohjelmaa ajetaan käännöshakemistossa ja se pitää linkittää käännöshakemiston kirjastoihin. Suoritettava binääri (ohjelma) on käännetty RPATH-asetusten mukaisesti, ja sen lisäksi on luotu ohjelman kanssa samanniminen suoritettava shellin komentojonotiedosto, jonka pääte on ".sh". Shellin komentojonotiedosto asettaa LD_LIBRARY_PATH-muuttujan ja suorittaa varsinaisen ohjelman. | |||
Käytä tätä komentojonotiedostoa komennolla ADD_CUSTOM_COMMAND() kuten alla olevassa esimerkissä. Nimen ja tarkan sijainnin saat WRAPPER_SCRIPT muuttujasta. | Käytä tätä komentojonotiedostoa komennolla ADD_CUSTOM_COMMAND() kuten alla olevassa esimerkissä. Nimen ja tarkan sijainnin saat WRAPPER_SCRIPT-muuttujasta. | ||
Tässä kdelibs/kstyles/keramik/:sta kopioitu esimerkki: | |||
< | <syntaxhighlight lang="text"> | ||
# käännä ajettava binääri | # käännä ajettava binääri | ||
KDE4_ADD_EXECUTABLE(genembed RUN_UNINSTALLED ${genembed_SRCS}) | KDE4_ADD_EXECUTABLE(genembed RUN_UNINSTALLED ${genembed_SRCS}) | ||
Line 272: | Line 271: | ||
DEPENDS genembed ${keramikPics} | DEPENDS genembed ${keramikPics} | ||
) | ) | ||
</ | </syntaxhighlight> | ||
Kuten huomaat genembed on myös listattu riippuvuudeksi | Kuten huomaat, genembed on myös listattu riippuvuudeksi. Sen ansiosta cmake tietää että sen on luotava binääri nimeltä genembed ennenkuin se voi suorittaa kyseisen oman komennon. | ||
=== En haluaisi käyttää -DCMAKE_INSTALL_PREFIX | === En haluaisi käyttää -DCMAKE_INSTALL_PREFIX komentoriviparametria. Tukeeko CMake KDEDIR-ympäristömuuttujaa? === | ||
Ei. $KDEDIR on jäämässä pois KDE 4:ssä. | Ei. $KDEDIR on jäämässä pois KDE 4:ssä. | ||
=== Miksi saan kääntäjävirheitä kuten /usr/lib/qt4/include/QtCore/qstring.h:536: undefined reference to `QString::fromLatin1_helper(char const*, int)'? === | === Miksi saan kääntäjävirheitä kuten /usr/lib/qt4/include/QtCore/qstring.h:536: undefined reference to `QString::fromLatin1_helper(char const*, int)'? === | ||
Jos sinulla on vanha Qt4 versio qt/lib hakemistossa, sinun pitää poistaa vanhat (4.0.1) tiedostot. | Jos sinulla on vanha Qt4-versio qt/lib hakemistossa, sinun pitää poistaa vanhat (4.0.1) tiedostot. | ||
=== Kuinka saan tehtyä äänekkäitä Makefile tiedostoja? Haluan seurata tarkasti mikä komento milloinkin on menossa. === | === Kuinka saan tehtyä "äänekkäitä" Makefile tiedostoja? Haluan seurata tarkasti mikä komento milloinkin on menossa. === | ||
Anna VERBOSE muuttuja make:lle, esim: | Anna VERBOSE muuttuja make:lle, esim: | ||
< | <syntaxhighlight lang="text"> | ||
% make VERBOSE=1 | % make VERBOSE=1 | ||
</ | </syntaxhighlight> | ||
tai | |||
< | <syntaxhighlight lang="text"> | ||
% VERBOSE=1 make | % VERBOSE=1 make | ||
</ | </syntaxhighlight> | ||
Lisätietoja | Lisätietoja CMake Wikisä: [http://www.cmake.org/Wiki/CMake_FAQ#Is_there_an_option_to_produce_more_.27verbose.27_compiling.3F Is there an option to produce more 'verbose' compiling?] | ||
=== Makefilessä ei ole 'make distclean' kohdetta. Kuinka siivoan pois kaikki, myös välimuistissa olevat tiedostot ? === | === Makefilessä ei ole 'make distclean' -kohdetta. Kuinka siivoan pois kaikki, myös välimuistissa olevat tiedostot? === | ||
Poista yksinkertaisesti käännöshakemisto tai sen sisältö. | |||
[[Category:Programming]] | [[Category:Programming]] | ||
[[Category:Tutorial]] | [[Category:Tutorial]] | ||
[[Category:FAQs]] | [[Category:FAQs]] |
Latest revision as of 09:41, 15 July 2012
Esipuhe
CMake tuottaa ohjaustiedostot järjestelmän omalle kääntäjälle omien komentotiedostojensa avulla. Se voi luoda GNU Makefilet, KDevelop-projektitiedostot, XCode-projektitiedostot sekä Visual Studio-projektitiedostot.
CMake on vapaan lähdekoodin ohjelmisto joka on julkaistu BSD-tyylisen lisenssin alaisena. CMaken ylläpitäjä on Kitware Inc.
Näistä voit aloittaa CMaken perusteiden opiskelun (englanniksi):
- CMake-ohjekirja
- CMake Wiki
- CMake – järjestelmän tarkistukset
- CMake – kuinka löytää asennetut ohjelmat
- KDE 4 -perehdytys CMake Wikissä
- CMake FAQ
- Kde-buildsystem -postituslistan arkisto
Voit myös liittyä CMake-postituslistalle.
Miksi käyttää CMakea?
Maaliskuussa 2006 päätettiin valita CMake KDE 4 julkaisun viralliseksi työkaluksi, pääsääntöisesti sen teknisten ominaisuuksien vuoksi verrattuna vanhempiin KDE työkaluihin kuten automake ja unsermake:
- CMake on kehitetty KDE:stä riippumattomana, ja sitä voidaan käyttää myös muissa projekteissa
- Käännösajat jäävät paljon pienemmiksi, pääosin koska libtoolia ei enää tarvita
- Käännöstiedostot ovat helpompia kirjoittaa
KDE:n kääntäminen CMakea käyttäen
Lataa ja asenna CMake
Linux, BSD, sekä muut Unix Järjestelmät
Hae viimeisin vakaa versio CMakesta täältä.
Pura ja käännä:
$ mkdir cmake-build
$ cd cmake-build
$ ../bootstrap
$ make
$ make install
Oletuksena ylläoleva asentaa CMaken /usr/local -puuhun, joten varmista että /usr/local/bin on määritelty polussa. Vaihtaaksesi asennushakemistoa (esim. /usr debianissa), lisää '--prefix=PATH' valitsin bootstrap-komentoon. (Esim: $ ../bootstrap --prefix=/usr)
Jos haluat asentaa viimeisimmän kehitysversion, seuraa ohjeita täältä.
Windows
Hae viimeisin vakaa versio CMakesta täältä.
Ladattuasi, suorita cmake asennusohjelma.
Oletuksena CMake asennetaan C:\Program Files\CMake 2.4 - hakemistoon. Varmista että C:\Program Files\CMake 2.4\bin löytyy polkumuuttujasta.
Jos haluat asentaa viimeisimmän kehitysversion, seuraa ohjeita täältä.
CMaken käyttäminen
Linux, BSD, sekä muut Unix Järjestelmät
Luodaksesi järjestelmällesi käännöstiedostot (Makefile) sinun tarvitsee ajaa CMake. CMake tukee käännöksiä sekä lähdekoodin seassa että sen ulkopuolella, mutta tällä hetkellä lähdekoodin seassa kääntäminen on estetty KDE:n toteutuksessa.
Esikerkiksi, jos kdelibs/ sijaitsee ~/src hakemistossa niin kääntäminen menee seuraavasti:
$ ls
kdelibs/
$ mkdir kdelibs-build
$ cd kdelibs-build
$ cmake ../kdelibs
Ylläoleva tuottaa Makefilet kdelibs/ -tiedostojen kääntämiseksi kdelibs-build/ hakemistoon.
Windows
Luodaksesi järjestelmällesi käännöstiedostot (Makefile) sinun tarvitsee ajaa CMake. CMake tukee käännöksiä sekä lähdekoodin seassa että sen ulkopuolella, mutta tällä hetkellä lähdekoodin seassa kääntäminen on estetty KDE:n toteutuksessa.
Esimerkiksi, jos kdelibs/ sijaitsee c:\data\kde4 hakemistossa, niin kääntäminen tehdään seuraavasti:
c:\daten\kde4> cd kdelibs\win
c:\daten\kde4> cmake
c:\daten\kde4> make
c:\daten\kde4> make install
c:\daten\kde4> cd ..
c:\daten\kde4> mkdir kdelibs-build
c:\daten\kde4> cd kdelibs-build
c:\daten\kde4\kdelibs-build> cmake ..\kdelibs
Ylläoleva tuottaa Makefilet kdelibs/ -tiedostojen kääntämiseksi kdelibs-build/ -hakemistoon. Lisätietoja KDE:n kääntämisestä Windows ympäristössä löytyy täältä.
KDevelop Project Files
Jos haluat luoda projektitiedostot KDevelopille (Makefile-tiedostot sekä muutamia KDevelopin vaatimia lisätiedostoja), suorita CMake seuraavasti:
$ cmake ../kdelibs -GKDevelop3
'cmake -h' näyttää muut CMakessa tuetut valitsimet.
CMake ja Qt4
Paikallistaakseen QT 4 kirjaston CMake etsii qmakea polusta. CMake ei hyödynnä QTDIR-ympäristömuuttujaa, joten varmista että oikea qmake löytyy ensimmäisenä polkumuuttujasta.
Lisää yksityiskohtia
Kun CMaken suoritus on valmis, on CMake luonut tiedoston nimeltä "CMakeCache.txt". Tämä tiedosto sisältää kaikki asetukset jotka CMake on tunnistanut järjestelmästäsi. Jos haluat suorittaa CMaken tuottaaksesi käännöstiedostot toiseen käännösympäristöön, tai haluat että asetukset tutkitaan uudelleen, poista tämä tiedosto.
Jos CMake ei löydä jotain, mutta olet varma että se on järjestelmässäsi, on mahdollista käsin kertoa CMakelle mistä etsiä. CMake käyttää apunaan muuttujia johon tämä tieto tallennetaan. Muuttujat on varastoitu "CMakeCache.txt" -tiedostoon. Muuttujien määrittelemiseksi käsin on kolme vaihtoehtoa:
- Komentoriviltä: cmake ../kdelibs -DMUUTTUJAN_NIMI=arvo
- Merkkipohjainen ccmake-käyttöliittymä (suorita: ccmake ../kdelibs)
- Muokkaamalla CMakeCache.txt -tiedostoa (ei suositella)
Kannattaa suorittaa "ccmake ../kdelibs" ainakin kerran, jotta saat kokonaiskuvan kaikista niistä muuttujista, joita CMake käyttää. Ohjelmassa paina "T" nähdäksesi myös laajennetut muuttujat. Jos CMake ei siis löydä jotain, käynnistä ccmake ja aseta se käsin.
Komentorivimuuttujat
Muutamia cmake:n komentorivillä annettavia muuttujia joita saatat haluta muuttaa:
- CMAKE_INSTALL_PREFIX: cmake ../kdelibs -DCMAKE_INSTALL_PREFIX=/opt/kde4 on vastaava kuin ./configure --prefix=/opt/kde4
- CMAKE_BUILD_TYPE: määrittelee käännöstyypin. Vaihtoehdot: "debugfull", "debug", "profile", "relwithdebinfo" ja "release". Oletuksena "relwithdebinfo" (-O2 -g). Katso lisätietoja: FindKDE4Internal.
- KDE4_BUILD_TESTS=ON: Luo Makefilet testiohjelmien kanssa jotka myös tuottavat testikäännökset
- KDE4_TEST_OUTPUT=xml: Luo yksikkötesteistä XML-muotoiset lokitiedostot QTestLib:ä käyttäen.
- KDE4_DISABLE_MULTIMEDIA=ON: Kääntää KDE:n ilman multimediatuka (ääni ja video).
- RPATH_STYLE: Ei enää valittavissa. Oletuksena kaikki käännetään oikein asetetun RPATH:n kanssa. Jos et halua käyttää lainkaan RPATH:a, aseta CMAKE_SKIP_RPATH=TRUE.
- BUILD_foo=OFF: Jättää hakemiston 'foo' kääntämättä.
- WITH_foo: Tähän on useita vaihtoehtoja, esim: WITH_CUPS tai WITH_Jasper. Jos poissuljet (=OFF), cmake ei edes yritä etsiä näitä. Jos on valittu, cmake yrittää etsiä näitä. Jos haku epäonnistuu, voit silti määritellä sijainnin käsin, kuten aikaisemmin neuvottiin.
Ympäristömuuttujat
Jos sinulla on otsikkotiedostoja tai kirjastoja asennettuna epätavallisiin hakemistoihin, joista cmake ei niitä löydä, pitää asettaa seuraavat ympäristömuuttujat. Huolimatta samankaltaisesta nimeämistyylistä, näitä ei voi antaa cmakelle komentoriviltä.
- CMAKE_INCLUDE_PATH, eg. export CMAKE_INCLUDE_PATH=/sw/include
- CMAKE_LIBRARY_PATH, eg. export CMAKE_LIBRARY_PATH=/sw/lib
Lisätietoja muuttujista: katso cmake.org -wikisivu.
Seuraavaksi
Jos cmake:n suoritus päättyy ilmoitukseen "Generating done", ei virheitä ilmennyt. Nyt voit suorittaa käännöksen normaaliin tapaan (make, KDevelop, XCode tai MSVC). Käännöksen jälkeen asennus normaalisti, esim. "make install"
Jos suoritus päättyy ilmoitukseen "Configuring done", on ilmennyt joitain virheitä jotka pitää selvittää.
Jos sait virheilmoituksen jossa kerrotaan seuraavan kaltaista:
CMake Error: This project requires some variables to be set,
and cmake can not find them.
Please set the following variables:
X11_XTest_LIB (ADVANCED)
niin luultavammin jotakin kirjastoa (tai muuta riippuvuutta) ei löytynyt. Selvittääksesi mikä kirjasto on kyseessä, etsi cmake/modules hakemistosta muuttujaa jota cmake ei löytänyt. Tässä esimerkissä se on
FIND_LIBRARY(X11_XTest_LIB Xtst ${X11_LIB_SEARCH_PATH})
Joten puuttuva tai epänormaaliin sijaintiin asennettu kirjasto on Xtst. Kirjaston asentamisen jälkeen suorita uudelleen cmake.
CMaken käyttö yksinkertaisessa sovelluksessa
Yksinkertaisin toimiva CMakeLists.txt:
add_executable(hello main.cpp)
Tämä tuottaa main.cpp -lähdekooditiedostosta suoritettavan ohjelman nimeltä "hello" (tai "hello.exe" Windowsissa). Voit käyttää samanaikaisesti sekä C- attä C++-tiedostoja. Voit sijoittaa useampia suoritettavia binäärejä tai kirjastoja samaan CMakeLists.txt tiedostoon. Samaa lähdekooditiedostoa voidaan käyttää useamman binäärin kääntämiseen ja se käännetään jokaista binääriä kohden erikseen riippumatta muista binääreistä. CMake-komentokielen tärkein osa lienevät muuttujat:
SET( MY_SOURCES main.cpp widget.cpp)
MESSAGE(STATUS "my sources: ${MY_SOURCES}")
SET() -komennolla voit asettaa muuttujalle arvon. Jos asetat arvoksi useamman merkkijonon, muutujan tyypiksi tulee lista. Lista on puolipisteillä eroteltu merkkijonojen luettelo. Saadaksesi muuttujan arvon käytä muotoa $(MUUTTUJA). Listan voit iteroida seuraavasti:
FOREACH():
FOREACH(next_ITEM ${MY_SOURCES})
MESSAGE(STATUS "next item: ${next_ITEM}")
ENDFOREACH(next_ITEM ${MY_SOURCES})
CMaken komennoissa, muuttujien nimissä ja muuttujien parametreissä on huomioitava kirjainkoko (a != A).
Voit myös testata ehtoja:
IF (UNIX)
MESSAGE(STATUS "This is UNIX (including OS X and CygWin)")
ENDIF (UNIX)
IF (MSVC)
SET(MY_SRCS ${MY_SRCS} winextra.cpp)
ENDIF (MSVC)
Jälkimmäisessä esimerkissä näytetään myös miten lisätään listaan merkkijono.
Suositeltavaa lukemista on CMake Wikissä perehdytys "Kuinka käännän KDE 4 -ohjelmistoja".
CMaken käyttö KDE-projektissa
Seuraavasa on perus-CMakeList-tiedosto, jolla voi kääntää KDE 4 -projektin:
PROJECT(kde4project)
FIND_PACKAGE(KDE4 REQUIRED)
INCLUDE_DIRECTORIES( ${KDE4_INCLUDES} )
SET(KDE4ProjectSources kde4mainapp.cpp someclass.cpp someotherclass.cpp)
KDE4_ADD_EXECUTABLE(kde4project ${KDE4ProjectSources} )
TARGET_LINK_LIBRARIES(kde4project ${KDE4_KDEUI_LIBS} ${KDE4_KPARTS_LIBS} )
Muuttujat, makrot ja muuta KDE:ä koskevaa hyödyllistä tietoa löytyy Development/CMake/Addons for KDE -sivulta.
CMaken laajentaminen
CMakea voi laajentaa käyttämällä cmake-komentojonoja. CMaken mukana tulee useita valmiita komentojonoja. UNIX-pohjaisissa järjestelmissä ne on asennettu oletuksena /usr/local/share/CMake/Modules -hakemistoon (riippuen CMaken asennushakemistosta). KDE-kirjastot asentavat myös joukon cmake-laajennuksia share/apps/cmake/modules/ -hakemistoon. KDE:n hakemistossa sijaitsevat laajennukset ohittavat järjestelmänlaajuiset cmaken laajennukset. Ohjelmapakettien etsimistä varten täällä on FindFOO.cmake tiedostot, katso lisätietoja täältä. CMaken kanssa on myös mahdollista käyttää makroja, jotka ovat käyttökelpoisia useimpiin tilanteisiin joita ohjelmien kääntämisessä tarvitaan.
autotools-pohjaisen KDE-ohjelmiston kääntäminen CMakelle
Hakemistossa kdesdk/cmake/ on tiedosto nimeltään am2cmake. am2cmake on ruby-skripti, joten ruby tulee olla asennettu. Suorita am2cmake lähdekoodin päähakemistossa:
$ cd src/mykooltool/
$ am2cmake --kde4
Älä unohda "--kde4" - valitsinta, muuten am2cmake ei tuota KDE 4 -ohjelmistoille sopivia tiedostoja. Käännetyt tiedostot 'voivat' toimia sellaisenaan kääntämisen jälkeen, mutta monimutkaisemmat projektit yleensä vaativat lisämuokkauksia.
Saatat joutua:
- lisäämään sisällytettävia hakemistoja, käyttäen INCLUDE_DIRECTORIES()
- lisäämään linkkejä kirjastoihin, käyttäen TARGET_LINK_LIBRARIES()
- lisäämään joitain määrittelyjä kääntäjälle, käyttäen ADD_DEFINITIONS()
- lisäämään tarkistuksia. Katso [Kuinka Tehdä Ympäristö Tarkistuksia sekä Kuinka löytää asennettuja ohjelmia
- huolehtimaan libtool-yhteensopivista kirjastoista. Ne eivät ole tuettuina cmakessa, sen sijaan on ConvenienceLibs.cmake. Tästä tiedostosta löydät jokaiselle yhteensopivuuskirjastolle muuttujan, joka sisältää kaikki kyseisen yhteensopivuustiedoston lähteet.
- am2cmake luo tiedoston nimeltä AdditionalInfo.txt. Tässä tiedostossa on lueteltu kaikki *.in ja *.in.in tiedostot kyseisestä projektista. Näissä tiedostoissa olevat asiat pitää kääntää käsin CMakelle.
Usein kysyttyjä kysymyksiä
Kuinka voin opettaa käyttämälleni tekstieditorille CMaken syntaksin ja sisennykset?
CMake Wikin osiossa CMake Editors Support on ohjeet Emacs- (myös XEmacs), VIM-, Kate-, KWrite- sekä KDevelop-editoreille.
Käännöksen aikana pitäisi luoda eräitä tiedostoja. Kuinka ne tehdään?
Käytä: ADD_CUSTOM_COMMAND(). Sen toiminta on selitetty CMake Wikissä: Kuinka luon lähdetiedoston käännön aikana
Minun pitäisi kääntää ohjelma jota käytetään myöhemmin käännöstyössä luomaan tiedostoja. Kuinka tämä tehdään?
Oletetaan, että luotavan ohjelman nimi on genembed. Käytä KDE4_ADD_EXECUTABLE(foo RUN_UNINSTALLED ${fooSources}) luodaksesi käynnistettävän binäärin. RUN_UNINSTALLED on tärkeä, koska ohjelmaa ajetaan käännöshakemistossa ja se pitää linkittää käännöshakemiston kirjastoihin. Suoritettava binääri (ohjelma) on käännetty RPATH-asetusten mukaisesti, ja sen lisäksi on luotu ohjelman kanssa samanniminen suoritettava shellin komentojonotiedosto, jonka pääte on ".sh". Shellin komentojonotiedosto asettaa LD_LIBRARY_PATH-muuttujan ja suorittaa varsinaisen ohjelman. Käytä tätä komentojonotiedostoa komennolla ADD_CUSTOM_COMMAND() kuten alla olevassa esimerkissä. Nimen ja tarkan sijainnin saat WRAPPER_SCRIPT-muuttujasta. Tässä kdelibs/kstyles/keramik/:sta kopioitu esimerkki:
# käännä ajettava binääri
KDE4_ADD_EXECUTABLE(genembed RUN_UNINSTALLED ${genembed_SRCS})
# hae komentojonotiedoston nimi(joka asettaa LD_LIBRARY_PATH muuttujan)
GET_TARGET_PROPERTY(GENEMBED_EXECUTABLE genembed WRAPPER_SCRIPT)
# ja viimein oma komento
ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/keramikrc.h
COMMAND ${GENEMBED_EXECUTABLE} --file ${CMAKE_CURRENT_BINARY_DIR}/keramikPics.txt > \
${CMAKE_CURRENT_BINARY_DIR}/pixmaps.keramik
DEPENDS genembed ${keramikPics}
)
Kuten huomaat, genembed on myös listattu riippuvuudeksi. Sen ansiosta cmake tietää että sen on luotava binääri nimeltä genembed ennenkuin se voi suorittaa kyseisen oman komennon.
En haluaisi käyttää -DCMAKE_INSTALL_PREFIX komentoriviparametria. Tukeeko CMake KDEDIR-ympäristömuuttujaa?
Ei. $KDEDIR on jäämässä pois KDE 4:ssä.
Miksi saan kääntäjävirheitä kuten /usr/lib/qt4/include/QtCore/qstring.h:536: undefined reference to `QString::fromLatin1_helper(char const*, int)'?
Jos sinulla on vanha Qt4-versio qt/lib hakemistossa, sinun pitää poistaa vanhat (4.0.1) tiedostot.
Kuinka saan tehtyä "äänekkäitä" Makefile tiedostoja? Haluan seurata tarkasti mikä komento milloinkin on menossa.
Anna VERBOSE muuttuja make:lle, esim:
% make VERBOSE=1
tai
% VERBOSE=1 make
Lisätietoja CMake Wikisä: Is there an option to produce more 'verbose' compiling?
Makefilessä ei ole 'make distclean' -kohdetta. Kuinka siivoan pois kaikki, myös välimuistissa olevat tiedostot?
Poista yksinkertaisesti käännöshakemisto tai sen sisältö.