Розбираємося із CMakeLists
CMake
У нашому вступному підручнику ми використали CMake як систему збирання для нашої програми, але приділили увагу лише одному з файлів CMakeLists.txt
. Цей розділ ми присвятимо докладнішому вивченню принципів його роботи.
CMake є корисним, оскільки за його допомогою ми можемо автоматизувати більшу частину роботи, яку слід виконати до компіляції.
CMakeLists.txt
Можливо, ви пам'ятаєте цей файл CMakeLists.txt
з першого підручника:
|
|
Перший рядок, project(helloworld)
, визначає назву проєкту.
Після цього ми встановлюємо версії потрібних нам інструментів. cmake_minimum_required(VERSION 3.16)
встановлює версію CMake, яку ми викликатимемо. Далі, ми використовуємо set()
для визначення змінних (KF5_MIN_VERSION
і QT_MIN_VERSION
), які містять дані щодо версій KDE Frameworks і Qt.
Далі, маємо розділ, у якому ми включимо декілька потрібних параметрів CMake і KDE за допомогою extra-cmake-modules. Зараз немає сенсу надто перейматися цими рядками — ми не будемо змінювати їх у цьому підручнику.
Наступний розділ є важливим, оскільки у ньому визначають, які залежності ми використовуватимемо під час компіляції. Погляньмо на перший рядок:
find_package(KF5 ${KF5_MIN_VERSION} COMPONENTS Kirigami2 I18n CoreAddons WidgetsAddons)
- find_package() знаходить і завантажує зовнішній компонент.
- Першим словом є бібліотека (
KF5
). - Далі, ми викликаємо змінну із версіями, значення яких ми вказали у другому рядку.
COMPONENTS
— параметр, який передує специфічним компонентам бібліотеки, які ми включатимемо.- Кожне слово після
COMPONENTS
вказує на компонент.
Нотатка
Якщо ви хочете додати будь-які компоненти зі списку у документації до програмного інтерфейсу KDE до вашої програми, ви можете звернутися до коду правої бічної панелі, щоб ознайомитися зі способом додавання компонента за допомогою CMake. Наприклад, для
Kirigami2
ви побачите щось подібне до find_package(KF5Kirigami2)
, що з додаванням extra-cmake-modules стає чимось подібним до find_package(KF5 COMPONENTS Kirigami2)
.
Значну увагу слід звернути на включення компонентів, оскільки пропускання компонентів, які використано у вашому коді, призведе до неможливості зібрати вашу програму.
Останній рядок, add_subdirectory(src)
, вказує каталог src/
для CMake.
|
|
Оскільки більша частина визначається першим файлом, цей файл є набагато коротшим.
- set() використовується для встановлення для
helloworld_SRCS
значенняmain.cpp
іresources.qrc
(якщо ми вирішимо створити додаткові файли C++, нам слід також додати їх тут) - add_executable() відповідає за назву нашого виконуваного файла і визначення файлів, які потрібні для його створення
- target_link_libraries динамічно пов'язує ціль із бібліотеками, які використовуються у нашому коді для створення виконуваного файла.
Нотатка
Зауважте, що ці бібліотеки мають відповідати компонентам, які ми включили до нашого попереднього файлаCMakeLists.txt
— інакше ці компоненти не буде включено і нашу програму не можна буде зібрати.Такими налаштуваннями можна скористатися для створення більшості програм на основі Kirigami.