CMake è un software libero multipiattaforma per l'automazione dello sviluppo il cui nome è un'abbreviazione di cross platform make. Questo software nasce per rimpiazzare Automake nella generazione dei Makefile, cercando di essere più semplice da usare. Infatti, nella maggior parte dei progetti, non esiste un Makefile incluso nei sorgenti, dato che questo non è portabile.

Per la compilazione del programma è necessario verificare che siano incluse tutte le librerie e scovare i loro percorsi all'interno del file system. Proprio per questo motivo, è impossibile avere un Makefile già scritto.

A questo punto, il tool Automake, doveva eseguire una precisa ricerca di tali librerie e infine, se non si sono riscontrati errori, la definitiva creazione del Makefile per la successiva compilazione. Questo avveniva con:

./configure make make install

La creazione di un configure non è proprio facilissima. Proprio per questo interviene il nuovo sistema di generazione di Makefile: CMake.

Utilizzo

CMake è un tool molto modulare che, con poche e concise istruzioni, è in grado di generare Makefile a puntino. CMake dispone di una particolare sintassi comprensiva di moltissime macro e il loro utilizzo è possibile mediante un apposito file chiamato CMakeLists.txt.

Un tipico e semplicissimo esempio di CMakeLists.txt è il seguente:

cmake_minimum_required(VERSION 3.27)

project(matematica)

add_executable(matematica src/main.cpp )

target_link_libraries(matematica Boost::boost )

Per la generazione del Makefile e la successiva compilazione del progetto, è necessario eseguire i seguenti comandi: cmake -B build . cmake --build build Il primo comando configura e genera gli script per effettuare la build del progetto, all'interno della directory build, il secondo fa partire la compilazione.

Mediante CMake si crea effettivamente un Makefile astratto, mentre la sua creazione concreta avviene nel particolare sistema operativo utilizzato.

Applicazioni che usano CMake

KDE (partendo dalla versione 4) FreeFOAM versione di OpenFOAM ITK VTK OpenSceneGraph Scribus Quantum GIS ROS - Robotic Operating System

Netflix

Voci correlate make Automake

Altri progetti

Collegamenti esterni