Введення в cmake 1

Введення в CMake

CMake - це кроcсплатформенная утиліта для автоматичного складання програми з вихідного коду. При цьому сама CMake безпосередньо складанням не займається, а представляє з себе front-end. Як back-end`a можуть виступати різні версії make і Ninja. Так само CMake дозволяє створювати проекти для CodeBlocks, Eclipse, KDevelop3, MS VC ++ та Xcode. Варто відзначити, що більшість проектів створюються не нативних, а все з тими ж back-end`амі.

Для того що б зібрати проект засобами CMake, необхідно в корені дерева початкових кодів розмістити файл CMakeLists.txt, який зберігає правила і цілі збірки, і зробити кілька простих кроків.
Розберемося на прикладах.

Приклад 1. Hello, World:

Для початку напишемо найпростіший хеловорлд:

int main (int argc, char ** argv)

std :: cout <<"Hello, World!" <

і файл для збирання:

cmake_minimum_required (VERSION 2.8) # Перевірка версії CMake.

# Якщо версія встановленої програми

# Старіше вказаної, проізайдёт аварійний вихід.

add_executable (main main.cpp # Створює виконуваний файл з ім'ям main

# З исходника main.cpp

Створимо порожню директорію для тимчасових файлів і перейдемо туди.

Тепер запустимо команду cmake, передавши їй як параметр шлях до папки з вихідними кодами:

/ Cmake / example_1 /
...
- Build files have been written to: / home / fshp / tmp
fshp @ panica-desktop:

/ Tmp $ ls
CMakeCache.txt CMakeFiles cmake_install.cmake Makefile
fshp @ panica-desktop:

Бачимо, що в папці з'явилося кілька тимчасових файлів, необхідних для складання проекту.
Тепер можна запустити безпосередньо make:

/ Tmp $ make
Scanning dependencies of target main
[100%] Building CXX object CMakeFiles / main.dir / main.cpp.o
Linking CXX executable main
[100%] Built target main
fshp @ panica-desktop:

/ Tmp $ ./main
Hello, World!
fshp @ panica-desktop:

Отже, наша програма зібралася.
Папку tmp можна очіщатьудалять без ризику поламати вихідні. Якщо CMakeLists.txt був змінений, то виклик make автоматично запустить cmake. Якщо вихідні були переміщені, то потрібно очистити тимчасову директорію і запустити cmake вручну.

Приклад 2. Бібліотеки: