CMakeLists begrijpen
CMake
In ons inleidende handboek gebruiken we CMake als het bouwsysteem voor onze toepassing, maar we hebben slechts alleen wat meer aandacht besteed aan een van onze bestanden CMakeLists.txt
. Hier gaan we het in meer detail hebben over dit werkt.
CMake is nuttig omdat het ons is staat stelt om veel van de zaken die gedaan moeten worden alvorens te compileren te automatiseren.
CMakeLists.txt
Misschien herinnert u zich dit bestand CMakeLists.txt
uit de eerste handleiding:
|
|
De eerste regel, project(helloworld)
definieert de naam van het project.
Daarna stellen we de versies in van onze benodigde hulpmiddelen. cmake_minimum_required(VERSION 3.16)
stelt de versie van CMake in die we zullen aanroepen. Daarna gebruiken we set()
om variabelen te definiëren (KF5_MIN_VERSION
en QT_MIN_VERSION
) die de versies van KDE Frameworks en Qt bevatten.
Daarna krijgen we een sectie waar we een aantal noodzakelijke CMake en KDE-instellingen invoegen met gebruik van extra-cmake-modules. U zou zich nu niet te veel zorgen moeten maken over deze regels en we hoeven ze niet te wijzigen in deze handleiding.
De volgende sectie is belangrijk, omdat het specificeert welke afhankelijkheden we zullen inbrengen bij compileren. Laten we naar de eerste regel kijken:
find_package(KF5 ${KF5_MIN_VERSION} COMPONENTS Kirigami2 I18n CoreAddons WidgetsAddons)
- find_package() zoekt en laadt de externe component.
- Het eerste woord is het framework (
KF5
). - Daarna roepen we de variabele met de versies, die we instellen in de tweede regel, aan.
COMPONENTS
is een parameter die vooraf gaat aan de specifieke componenten van het framework dat we zullen invoegen.- Elk woord na
COMPONENTS
refereert naar een specifieke component.
Notitie
Als u zoekt om componenten in de lijst in de KDE API documentation aan uw toepassing toe te voegen, dan zou u de rechter zijbalk kunnen controleren op hoe de component met CMake toe te voegen. Bijvoorbeeld, voor
Kirigami2
zult u iets vinden zoals find_package(KF5Kirigami2)
, dat met de toevoeging van extra-cmake-modules iets wordt als find_package(KF5 COMPONENTS Kirigami2)
.
Let goed op uw ingevoegde componenten, omdat weglaten van die gebruikt worden in onze code onze toepassing niet laten compileren.
De laatste regel, add_subdirectory(src)
, wijst naar CMake in de map 'src/'.
|
|
Omdat het zwaarste gedaan wordt door het eerste bestand, is deze heel wat korter.
- [set()] (https://cmake.org/cmake/help/latest/command/set.html) wordt gebruikt om
helloworld_SRCS
in te stellen inmain.cpp
enresources.qrc
(als we beslissen om extra C++ bestanden aan te maken, die we nodig zullen hebben om ze hier ook toe te voegen) - add_executable() zorgt voor het geven van een naam aan ons uitvoerbare bestand en het pakken van de bestanden nodig om het aan te maken
- target_link_libraries koppelt dynamisch de bibliotheken, die gebruikt worden in onze code, aan ons uitvoerbare bestand.
Notitie
Merk op dat deze bibliotheken overeen zouden moeten komen met de componenten die we hebben ingevoegd in ons vorige bestandCMakeLists.txt
- anders zullen deze componenten niet ingevoegd worden en zal onze toepassing niet compileren.Deze opzet zal bruikbaar zijn bij ontwikkelen van de meeste Kirigami toepassingen.