Kompreni CMakeLists
CMake
En nia enkonduka lernilo, ni uzis CMake kiel la konstrusistemon por nia aplikaĵo, sed ni nur tre atentis unu el niaj CMakeLists.txt
dosieroj. Ĉi tie, ni iom pli detale trarigardos kiel ĝi funkcias.
CMake estas utila ĉar ĝi permesas al ni aŭtomatigi grandan parton de la aĵoj kiuj devas esti faritaj antaŭ kompilo.
CMakeLists.txt
Vi eble memoras ĉi tiun CMakeLists.txt
dosieron de la unua lernilo:
|
|
La unua linio, cmake_minimum_required(VERSION 3.16)
fiksas la version de CMake, kiun ni vokos.
Post tio, project(helloworld)
difinas la nomon de la projekto.
Poste ni atingas sekcion, kie ni inkluzivas kelkajn necesajn agordojn de CMake kaj KDE uzante extra-cmake-modules. Vi ne devus zorgi tro multe pri ĉi tiuj linioj nuntempe kaj ni ne bezonos ŝanĝi ilin en ĉi tiu lernilo.
La sekva sekcio estas grava, ĉar ĝi specifas kiujn dependecojn ni alportos je kompilo. Ni rigardu la unuan:
|
|
- find_package() trovas kaj ŝargas la eksteran komponanton.
- La unua vorto estas la kadro, Qt.
${QT_MAJOR_VERSION}
estas oportuna variablo provizita de ekstra-cmake-moduloj, kiu ebligas al ni elekti la Qt-version uzontan, 5 aŭ 6, depende ĉu ni uzas la CMake-flagon-DBUILD_WITH_QT6=ON
. REQUIRED
diras al CMake, ke ĉi tiuj dependecoj ja estas postulataj kaj ke ĝi eliros kun eraro se la pakaĵo ne troveblas.NO_MODULE
ŝanĝas CMake al la Agorda reĝimo. Ni ne bezonas zorgi pri tio nuntempe.- `KOMPONENTOJ' estas parametro, kiu antaŭas la specifajn komponantojn de la kadro, kiun ni inkludos.
- Ĉiu vorto post `KOPONENTOJ' rilatas al specifa komponanto.
Noto
Se vi celas aldoni iujn ajn komponantojn listigitajn en la KDE-API-dokumentado al via aplikaĵo, vi povas kontroli la dekstran flankan stangon kiel aldoni la komponanton kun CMake. Ekzemple, por
Kirigami2
, vi trovos ion kiel find_package(KF5Kirigami2)
, kiu kun la aldono de [extra-cmake-modules](https://api.kde.org/ecm /) fariĝas io kiel trovi_pakaĵon(KF5 KOMPONENTOJ Kirigami2)
.
Atentu viajn inkluzivitajn komponantojn, ĉar preterlasi tiujn uzatajn en nia kodo ĉesos nian aplikaĵon kompili.
La fina linio lasas CMake presi kiujn pakaĵojn ĝi trovis. Kaj super tio, add_subdirectory(src)
indikas CMake en la dosierujon src/
, kie ĝi trovas alian CMakeLists.txt
dosieron:
|
|
Ĉar plejparto de la peza levado estas farita de la unua dosiero, ĉi tiu estas multe pli mallonga.
- add_executable() zorgas pri generi nian ruleblan.
- target_sources() permesas al ni aldoni dosierojn, kiuj estos uzataj de nia nova rulebla.
- target_link_libraries() dinamike ligas la bibliotekojn uzatajn en nia kodo al nia rulebla. Kirigami ne estas inkluzivita ĉi tie ĉar ni uzas nur ĝian QML-modulon.
- install() metas nian rulilon en ĝian ĝustan lokon uzante
${KDE_INSTALL_TARGETS_DEFAULT_ARGS}
, oportunan variablon provizitan de [KDEInstallDirs] (https://api.kde.org/ecm/manual/ecm-kde-modules.7.html) en ekstra-cmake-modules kiu instalas ruleblajn kaj bibliotekojn en ilia ĝusta loko por vi sen bezono specifi la absolutan vojon, simile al GNUInstallDirs.
Noto
Notu, ke ĉi tiuj bibliotekoj devas kongrui kun la komponantoj, kiujn ni inkluzivis en nia antaŭa dosieroCMakeLists.txt
- alie ĉi tiuj komponantoj ne estos inkluzivitaj kaj nia aplikaĵo ne kompilos.Ĉi tiu aranĝo estos utila dum disvolvado de plej multaj Kirigami-aplikoj.