CMake
CMake je multiplatformní nástroj pro automatizování kompilace, testování, balíčkování a instalaci software. CMake je nezávislý na překladači a vývojovém prostředí programátora.
CMake sám o sobě není build system, ale generátor konfigurace pro build systémy jako Make, Ninja, apod. Překlad projektu pomocí CMake tedy probíhá ve dvou fázích:
- Konfigurace CMake a generování konfigurace pro build system. V terminálu se provádí typicky příkazem
cmake -B build -S . -G Ninja
- parametr
-B
určuje adresář, kde bude probíhat překlad (typickybuild
) - parametr
-S
určuje cestu k top-level adresáři projektu (.
odkazuje na aktuální adresář) - volitelný parametr
-G
určuje typ generátoru
- Kompilování projektu, případně generování dalších souborů (dokumentace, obrázky, atd.). V terminálu se provádí typicky příkazem
cmake --build build
Cesta build
za parametrem --build
určuje adresář, kde má probíhat překlad (odpovídá parametru -B
v předchozím příkladu).
Konfigurace projektu
Konfigurace se provádí v souborech CMakeLists.txt
umístěných mezi zdrojovými soubory v projektu.
Nejjednodušší nastavení projektu může vypadat takto:
cmake_minimum_required(VERSION 3.10)
project(MyAwesomeProject)
add_executable(my-target my-source.cpp)
Další užitečná makra:
- Nastavení standardu C++:
set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON)
- Nastavení parametrů překladače (GCC, Clang):
set(CMAKE_CXX_FLAGS "-Wall -pedantic") set(CMAKE_CXX_FLAGS_DEBUG "-g") set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
- Přidání podadresáře obsahujícího soubor
CMakeLists.txt
:add_subdirectory(src)
- Přidání knihovny k binárnímu souboru – viz target_include_directories a target_link_libraries.
Více informací najdete v oficiálním tutoriálu, na webu Modern CMake nebo v projektu CMake Examples.
Šablony
Šablony s počáteční konfigurací CMake pro C++ projekty: