Entendre les CMakeLists
CMake
En la nostra guia d'aprenentatge introductòria, emprem el CMake com el sistema de compilació per a la nostra aplicació, però només parem molta atenció a un dels nostres fitxers CMakeLists.txt
. Aquí, repassarem com funcionen amb una mica més de detall.
El CMake és útil perquè ens permet automatitzar gran part de les coses que s'han de fer abans de la compilació.
CMakeLists.txt
És possible que recordeu aquest fitxer CMakeLists.txt
de la primera guia d'aprenentatge:
|
|
La primera línia, cmake_minimum_required(VERSION 3.16)
estableix la versió del CMake que es cridarà.
Després d'això, project(helloworld)
defineix el nom del projecte.
Després arribem a una secció on incloem una sèrie de paràmetres necessaris de CMake i del KDE fent servir extra-cmake-modules. Per ara no heu de preocupar-vos massa per aquestes línies i no necessitarem canviar-les en aquesta guia d'aprenentatge.
La secció següent és important, perquè especifica quines dependències portarem en temps de compilació. Vegem el primer:
|
|
- find_package() cerca i carrega el component extern.
- La primera paraula és l'entorn de treball, les Qt.
${QT_MAJOR_VERSION}
és una variable d'utilitat proporcionada per «extra-cmake-modules» que ens permet triar la versió de les Qt a usar, 5 o 6, depenent de si usem l'indicador de CMake-DBUILD_WITH_QT6=ON
. REQUIRED
fa saber al CMake que aquestes dependencies són necessàries i que hauria de sortir amb un error si no s'ha pogut trobar el paquet.NO_MODULE
canvia el CMake en el mode Config. De moment, això no ens ha de preocupar.COMPONENTS
és un paràmetre que precedeix als components específics del marc de treball que incloem.- Cada paraula després de
COMPONENTS
es refereix a un component específic.
Nota
Si esteu mirant d'afegir qualsevol component llistat a la documentació de l'API de KDE a la vostra aplicació, podeu comprovar la barra lateral dreta per a com afegir el component amb el CMake. Per exemple, per al
Kirigami2
, trobareu quelcom com find_package(KF5Kirigami2)
, el qual amb l'addició de l'extra-cmake-modules es converteix en quelcom com find_package(KF5 COMPONENTS Kirigami2)
.
Pareu molta atenció als components inclosos, ja que l'omissió dels utilitzats en el nostre codi aturarà la compilació de l'aplicació.
La línia final permet que el CMake imprimeixi els paquets que ha trobat. I a sobre d'això, add_subdirectory(src)
a punta el CMake en el directori src/
, a on troba un altre fitxer CMakeLists.txt
:
|
|
Atès que la major part de la feina pesada es realitza amb la primera llima, aquesta és molt més curta.
- add_executable() s'encarrega de generar el nostre executable.
- target_sources() ens permet afegir fitxers que s'utilitzarà el nostre executable nou.
- target_link_libraries() enllaça dinàmicament les biblioteques utilitzades en el nostre codi amb el nostre executable. El Kirigami no s'inclou aquí perquè només estem utilitzant el seu mòdul QML.
- install() posa el nostre executable en el seu lloc correcte utilitzant
${KDE_INSTALL_TARGETS_DEFAULT_ARGS}
, una variable d'utilitat proporcionada per KDEInstallDirs en extra-cmake-modules que instal·len executables i biblioteques en el seu lloc correcte, sense necessitat d'especificar el camí absolut, de manera similar a GNUInstallDirs.
Nota
Cal tenir present que aquestes biblioteques han de coincidir amb els components que incloem en el nostre fitxerCMakeLists.txt
anterior. En cas contrari, aquests components no s'inclouran i la nostra aplicació no compilarà.Aquesta configuració serà útil en desenvolupar la majoria de les aplicacions escrites amb el Kirigami.