CMake — це планетарно відоме програмне забезпечення для збирання проектів з вихідного коду для усіх популярних операційних систем. Основний сайт проекту https://cmake.org/ на якому можна завантажити сам код програми, її дистрибуційні файли і інсталятори, а також переглянути усю наявну документацію. Репозиторій проекту - https://github.com/Kitware/CMake.

Насправді CMake являє собою надбудовою над системою збірки на подобі make, яка не раз використовувалась на даному сайті для GNU Linux чи інших Unix-подібних ОС. На інших ОС система збірки може бути іншою. Тобто CMake сценарії CMakeLists.txt призначені для генерування скриптів збірки для наявної у користувача ОС. У нашому випадку генеруються файли для утиліти make, які в свою чергу називаються Makefile.

Встановлення CMake

Встановлення на Ubuntu Linux

Сmake як і будь-яку іншу програму легко можна встановити з репозиторію наявної GNU/Linux системи за допомогою менеджера пакетів. Наприклад, щоб встановити CMake на Debian або Ubuntu похідних системах необхідно ввести наступну команду в командний рядок:

sudo apt-get install -y cmake

Також можна завантажити вихідний код з офіційного сайту, або github репозиторію і спробувати зібрати її вручну.

Встановлення на MS Windows

Інсталятор програми CMakeможна завантажити з офіційного сайту проекту https://cmake.org/download/.

На час написання статті для завантаження доступний файл під назвою cmake-3.28.0-rc3-windows-x86_64.msi.

Завантажуємо і встановлюємо як і будь-яку іншу програму у MS Windows.

Найпростіший проект на CMake

Для того щоб створити найпростіший проект який збирається за допомогою CMake, необхідно створити файл CMakeLists.txt всього з трьома командами у ньому. Ці команди наступні:
  • cmake_minimum_required для встановлення мінімальної версії CMake
  • project для встановлення основних параметрів проекту
  • add_executable для оголошення файлів, які потрібно скомпілювати для побудови кінцевого виконуваного файлу проекту.

Даний скрипт може виглядати наступним чином (файл CMakeLists.txt):

cmake_minimum_required(VERSION 3.16.3)

project(MyFirstHelloWorldCMake VERSION 1.0.0 LANGUAGES CXX)

add_executable(MyFirstHelloWorldCMake src/main.cpp)

Даний приклад проекту на CMake можна завантажити з git репозиторія який знаходиться за посиланням https://github.com/yuriysydor1991/kytok.org.ua-CMake-intro-article-resources/tree/main.

З наявних команд скрипта CMakeLists.txt можна зрозуміти що це С++ проект версія 1.0.0. Сама назва проекту і відповідно вихідний бірний файл, який буде створено після збирання проекту, називається MyFirstHelloWorldCMake. А вихідний код, для даного проекту, являє собою єдиний файл main.cpp у якому розміщена головна функція програми - main.

А найперша команда cmake_minimum_required вказує на мінімальну версію CMake, яка повинна використовуватись для збирання самого проекту. Якщо поточна встановлена версія CMake на машині користувача нижча ніж вказаній в цій команді, тоді під час спроби збирання проекту CMake завершить свою роботу з відповідною помилкою:

Збирання проекту за допомогою CMake

Для виконання збирання проекту можна використовувати проект з github у якому розміщені усі файли з даної статті за адресою https://github.com/yuriysydor1991/kytok.org.ua-CMake-intro-article-resources/tree/main.

Щоб зібрати проект, який використовує систему CMake необхідно виконати декілька дій.

  1. Створити директорію, у якій будуть міститись усі проміжні і фінальні файли збірки проекту. Найчастіше дана директорія називається build і розміщена вона у корені самого проекту. Хоча це не являється правилом і дану директорію можна називати будь-яким іменем і розміщувати будь-де на файловій системі. Дану директорію можна створити за допомогою наступних команд командного рядка:
    cd kytok.org.ua-CMake-intro-article-resources
    
    mkdir -vp build
    
    cd build
    
  2. Викликати саму програму cmake з новоствореної директорії побудови.
    cmake ../
    

    На даному етапі також можна вказати додаткові параметри для генерації файлів збирання, які будуть показані в наступних статтях по CMake.

  3. Для збирання проекту необхідно скористатись командою make (це для GNU/Linux або інших Unix-подібних ОС)
    make -j$(nproc)
    

    Дана команда запустить збирання проекту з зайнятими усіма наявними процесорами на системі.

    Або можна використати саму систему CMake:

    cmake --build .
    

Усі кроки збору даного проекту можуть виглядати наступним чином:

Після виконання усіх цих команд у за шляхом build/MyFirstHelloWorldCMake розміщений кінцевий результат збірки — виконуваний файл проекту:

В даному простому демонстративному проекті виконуваний файл знаходиться прямо у директорії build, але у інших проектах він може бути захованим у піддиректоріях build. Саме тому я використав команду find для знаходження кінцевого побудованого виконуваного файлу.

Висновки

Система CMake являється потужним помічником розробників, яка повністю автоматизує і сильно полегшує головну біль від збирання коду на наявній системі. Окрмім своїх прямих функцій вона також підтримує команди, які дозволяють завантажити і встановити в директорію побудови або загальносистемно додаткові необхідні пакунки для проекту. Окрім цього, для користувача присутні команди перевірки доступності залежностей для проекту. Також доступні і інші додаткові інструкції.

В подальших статтях буде більш детально розказано про додаткові основні команди CMake.