Ero sivun ”CMake syvemmin” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
Ei muokkausyhteenvetoa
Ei muokkausyhteenvetoa
Merkkaus: merged edit of another user
Rivi 15: Rivi 15:
== Ensimmäinen cmake-projekti ==
== Ensimmäinen cmake-projekti ==
make:n avulla pienen projektin kääntäminen:  
make:n avulla pienen projektin kääntäminen:  
Luo kansio cmakeprojekti, ja sinne tiedosto: CMakeLists.txt  
Luo kansio cmakeprojekti, ja sinne tiedosto: '''CMakeLists.txt'''
Esim. päätteellä:
Esim. päätteellä:
mkdir cmakeprojekti
cd cmakeprojekti
touch CMakeLists.txt
Kirjoita tiedostoon seuraavat rivit:
cmake_minimum_required(VERSION 3.21)
project(
    "eka-projekti"
    VERSION 0.1.0.2
    DESCRIPTION "Ensimmainen cmake-projektini"
    HOMEPAGE_URL "https://linux.fi"
    LANGUAGES "C" "CXX"
)
message("${PROJECT_NAME} on ensimmäinen projektimme, ja tässä on sen tiedot:")
message("Projektin versio on ${PROJECT_VERSION}")
message("Se koostuu neljästä osasta:")
message(${PROJECT_VERSION_MAJOR})
message(${PROJECT_VERSION_MINOR})
message(${PROJECT_VERSION_PATCH})
message(${PROJECT_VERSION_TWEAK})
message("Projektimme kuvaus on:${PROJECT_DESCRIPTION}")
message("Kotisivuksi olemme määritelleet tutun ${PROJECT_HOMEPAGE_URL}.")





Versio 10. joulukuuta 2024 kello 09.16

CMake
Käyttöliittymä teksti
Lisenssi cmake
Kotisivu cmake.org

CMaken käytön kuvaus

CMake on työkalu, jolla voidaan tehdä Makefilejä tai valmiita ohjelmistopaketteja. Se on siis Make-käskyä nähden pykälän verran abstraktimpi taso ylöspäin. Cmake:lla voidaan mm. tehdä deb- ja rpm-paketteja cpack-apuohjelman avulla. Lisäksi sen avulla voidaan hallita C/C++ kirjastoja joko valmiiksi käännettyjä moduleita tai luoda omia dynaamisia moduleita.

CMakeLists.txt on tiedosto, jonka perusteella cmake prosessoi ohjelmaprojektin. Ohjelmaprojekti voi olla esimerkiksi:testaus, ohjelman kääntäminen tai ohjelmapaketin luominen. CMakeLists.txt-tiedosto on siis yksi abstraktiotaso Makefile:stä abstraktimpaanpäin. CMakeLists.txt-tiedostot ovat käteviä erityisesti ohjelmoijille, jotka voivat niiden avulla automatisoida projektin Makefilejen ja ohjelmapakettien avulla.

CMakeLists.txt-tiedostossa voi olla monia käskyjä seka erittäin suuri määrä muuttuja-arvoja ja niitä voi itse lisätä. Tärkeimpiä käskyjä ovat esimerkiksi: cmake_minimum_required, project,set, install, include, if/else/elseif/endif, add_subdirectory, add_library, add_executable, target_link_libraries, configure_file, message, foreach, while/endwhile, function.

Kuten käskyistäkin voi päätellä, niin cmake on ohjelmointikieli. Koska siinä pystytään asettamaan muuttujia ja ehdollisia silmukoita, se täyttää kirkkaasti turingkoneen määritelmän. Tämä ohjelmointikieli on erikoistunut ohjelmien käännösten ja pakettien hallintaan. Kieli on case insensitive eli isolla ja pienellä kirjaimella ei ole eroa ohjelman prosessoinnissa. Varatut sanat saa selville käskyillä: cmake --help-command-list, cmake --help-variable-list ja cmake --help-property-list. Jos ajat käskyt, niin huomaat, että varattuja sanoja on todella monta. Esimerksiksi 3.28.3 versiossa on 1389-varattua sanaa. Onneksi kourallisella käskykannalla pääsee hyvin alkuun.

Cmake:n kotisivu on https://cmake.org/, josta löytyvät myös cmake-dokumentaatio. Cmake:n avulla käytetään myös erilaisia testaus-/paketoimis-ja käännösjärjestelmiä, kuten ctest, cpack, make, ninja jne. (joita muita kuin ctest:iä käytetään tässä esittelyssä).

Ensimmäinen cmake-projekti

make:n avulla pienen projektin kääntäminen: Luo kansio cmakeprojekti, ja sinne tiedosto: CMakeLists.txt Esim. päätteellä:

mkdir cmakeprojekti
cd cmakeprojekti
touch CMakeLists.txt

Kirjoita tiedostoon seuraavat rivit:

cmake_minimum_required(VERSION 3.21)

project(
   "eka-projekti"
   VERSION 0.1.0.2
   DESCRIPTION "Ensimmainen cmake-projektini"
   HOMEPAGE_URL "https://linux.fi"
   LANGUAGES "C" "CXX"
)

message("${PROJECT_NAME} on ensimmäinen projektimme, ja tässä on sen tiedot:")
message("Projektin versio on ${PROJECT_VERSION}")
message("Se koostuu neljästä osasta:")
message(${PROJECT_VERSION_MAJOR})
message(${PROJECT_VERSION_MINOR})
message(${PROJECT_VERSION_PATCH})
message(${PROJECT_VERSION_TWEAK})
message("Projektimme kuvaus on:${PROJECT_DESCRIPTION}")
message("Kotisivuksi olemme määritelleet tutun ${PROJECT_HOMEPAGE_URL}.")


Käyttö

Yleensä projekti käännetään ajamalla sen lähdekoodihakemistossa komento

cmake .

Käännösprosessia voi ohjata määrittelemällä -D-valitsimella käännöstä ohjaavia muuttujia:

cmake -D<muuttuja>=arvo

Esimerkiksi g++:n käännösvalitsimiin voi vaikuttaa muuttujalla CMAKE_CXX_FLAGS:

cmake -DCMAKE_CXX_FLAGS="-g -O2" .

Tämän jälkeen CMake yleensä luo Makefilen, jonka avulla ohjelma voidaan asentaa tyypillisesti komennolla

make all install

Katso myös