CMake-paketoinnin ohjeet

Tämä dokumentti tarjoaa parhaat käytännöt CMake-koontijärjestelmän käyttöön Fedora-paketeissa.

Riippuvuuksien rakentaminen

Sinun TÄYTYY lisätä seuraavat BuildRequires:

Vaatii koontiversion: cmake

Saatavilla olevat makrot

Yleensä käytät näitä teknisissä tiedotteissasi:

%cmake

Määrittelee CFLAGSin, LDFLAGin jne. ja kutsuu '%__cmake' sopivilla parametreilla ('-DCMAKE_INSTALL_PREFIX:PATH=/usr' ja vastaavat). Voit välittää '-Doption=value' tälle makrolle asettaaksesi asetukset buildsystemille.

%cmake_build

Rakentaa projektin (käyttäen '%__cmake --build`).

%cmake_install

Asentaa rakennetun projektin (käyttäen '%__cmake --asenna`).

%ctest

Suorittaa testit, jotka on määritelty 'add_test()' projektissa (käyttäen '%__ctest`).

Kun pakkaat KDE-ohjelmistoa, korvaat todennäköisesti '%cmake' joko '%cmake_kf5' tai '%cmake_kf6'. Lisätietoja löytyy osoitteesta KDE:n pakkausohjeet[KDE:n pakkausohjeet].

Näiden käyttö tai muokkaaminen on harvoin välttämätöntä (mutta sallittua):

Kaikki makrot, jotka alkavat kaksoisaliviivalla, on tarkoitettu yksityisiksi, EI vakaiksi ja todennäköisesti poistetaan tulevaisuudessa.
%__cmake

The path to the cmake executable.

%__ctest

Polku ctest-suoritettavaan tiedostoon.

%__cmake_in_source_build

Se ohjaa, tehdäänkö rakennelmat out-of-source (kun määrittelemätön, oletus) vai lähdekoodissa (kun ne on määritelty). Mahdollisuuksien mukaan on suositeltavaa käyttää lähteiden ulkopuolisia rakennelmia, sillä sekä Fedora että CMake ylävirtaan suuntautuvat tähän suuntaan.

%__cmake_builddir

Sisältää varsinaisen hakemiston sijainnin, jossa rakennus on tehty. Kun tehdään lähteen ulkopuolisia rakennelmia, tämä makro on sama kuin %_vpath_builddir. Kun tehdään lähdekoodin sisäisiä rakennelmia, tämä makro tallentaa varsinaisen sijainnin, jota rakennelmassa käytettiin.

Tämä makro sopii vain harvinaisiin yhteensopivuuskysymyksiin. Tavallisissa lähteiden ulkopuolisissa buildeissa tämä makro on sama kuin '%_vpath_builddir'. Se voidaan poistaa tulevaisuudessa.

Esimerkkikäyttö

%conf
%cmake

%build
%cmake_build

%install
%cmake_install

%check
%ctest

HUOM: Jos rakennetaan < EPEL 10:lle, niin '%cmake' pitäisi olla '%build' -muodossa`.

Huomautukset

`-DCMAKE_SKIP_RPATH:BOOL=ON'. Viimeisimmän cmake-2.4:n kanssa sitä ei pitäisi käyttää. Tämän CMake-version pitäisi hoitaa RPATH-ongelmat oikein (aseta ne build-dir-tilaan, poista asennuksen aikana). Tämän version 'CMAKE_SKIP_RPATH' asettaminen estäisi myös RPATHit build-dirissä. Tämä saattaisi yhdistää binäärit järjestelmäkirjastoihin (esim. kun aiempi versio on asennettu) sen sijaan, että ne olisivat luoneet rakennelman luomia kirjastoja.

Siitä huolimatta RPATH-ongelmia voi ilmetä, kun CMakea käytettiin väärin. Esimerkiksi kohteen asentaminen 'INSTALL(FILES ... NIMEÄ ...)' ei riisu rpatheja; tässä tapauksessa 'INSTALL(TARGETS ...)' on käytettävä yhdessä 'OUTPUT_NAME'-ominaisuuden muuttamisen kanssa.

CMakella on hyvää dokumentaatiota kahdessa paikassa: