CMake software-per-compilazione multipiattaforma per l’automazione dello sviluppo

CMake software-per-compilazione

CMake strumento che rende il processo gestibile perfino per principianti

La maggior parte dei programmi che analizziamo viene selezionato scorrendo l’ elenco delle nuove versioni Open Source disponibili. Tuttavia hanno anche un altra caratteristica in comune. Quando non c’è un modo semplice e veloce per procurarsi un binario precompilato, oppure duplicare e incollare alcuni comandi nel terminale, allora consigliamo sempre di compilare il software da sorgente. CMake, uno strumento che rende il processo gestibile.

Un esempio per cominciare può essere:

cmake -DMAKE_INSTALL_PREFIX:PACH=/usr_DMAKE_INSTALL_LIBDIR=usr/lib64..

Abbiamo aggiunto un argomento in più, per dire a CMake di usare il prefisso di sistema /usr e collocare le librerie condivise in usr/lib64. I due punti alla fine indicano che stiamo lavorando in una sotto directory,al’ interno di un albero di sorgenti principali. Il risultato di una corretta esecuzione di CMake consiste in un Makefile funzionante, utilizzabile per poi creare un programma.

software-per-compilazione

Il triangolo colorato in RGB di CMake indica una buona alternativa a vecchie utility simili come Autotools.

Installazione

Per installare il software CMake collegati a questa pagina Download:

https://cmake.org/download/

Se installate CMake da un file tar.gz, scaricate il file che troverete nella cartella Scaricati, estraetelo aprite un terminale (CTRL+ALT+T)  e date questi comandi:

Terminale
  1. cd Scaricati
  2. cd cmake-3.2.2
  3. ./configure
  4. make

Per installare dirretamente da terminale:

Terminale
  • sudo apt-get update
  • sudo apt-get install cmake

Per vedere la versione installata:

Terminale
  • cmake -version

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 ed il loro utilizzo è possibile mediante un apposito file chiamato CMakeLists.txt.

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

PROJECT(matematica)

ADD_DEFINITIONS(-pipe -O2 -mtune=native)

ADD_EXECUTABLE(
../bin/matematica
src/main.cpp
)

Per la generazione del Makefile e la successiva compilazione del progetto, usiamo questi comandi:

mkdir build
cd build
cmake ..
make

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
  • LLVM, su llvm.org

Esempio d’utilizzo

Proprio come qualsiasi IDE che ha file di progetto o Make come Makefile, CMake ha file CmakeLists.txt. Questo descrive il tuo progetto in CMake e ne influenza l’output. Sono abbastanza semplici soprattutto rispetto ai Makefile. Ecco il nostro primo CMakelists.txt:

CMakeLists.txt

project(“To Do List”)

add_executable(toDo main.cc
ToDo.cc)

Il comando di project nomina il tuo progetto. Opzionalmente è possibile specificare quale lingua supporta il progetto, qualsiasi CXX, C, JAVA o FORTRAN. Per impostazione predefinita, CMake utilizza C e CXX quindi se non si dispone di compilatori per C ++ installati potremmo avere la necessità di specificare la lingua supportata in modo che CMake non la cerchi.
Nota: se il nome del progetto contiene spazi, deve essere racchiuso tra virgolette.
project () documentazione (2013/03/26)
add_executable ( fonti di destinazione … )
Questo comando dice a CMake che vuoi fare un eseguibile e lo aggiunge come bersaglio. Il primo argomento è il nome dell’eseguibile e il resto sono i file sorgente. Si può notare che i file di intestazione non sono elencati. CMake gestisce automaticamente le dipendenze in modo che non sia necessario elencare le intestazioni.
documentazione add_executable () (2013/03/26)

Ovviamente abbiamo bisogno di un codice sorgente da compilare, quindi inizieremo con lo scheletro più semplice possibile:

main.cc

#include “ToDo.h”

int main(
int argc,
char** argv
)
{
ToDo list;

return 0;
}

ToDo.h

#ifndef TODO_H
#define TODO_H

class ToDo
{
public:
ToDo();
~ToDo();
};

#endif // TODO_H

ToDo.cc

#include “ToDo.h”

ToDo::ToDo()
{
}

ToDo::~ToDo()
{
}

fonte

La documentazione di CMake suggerisce fortemente che le build out-of-source vengano eseguite piuttosto che le build in-source. Sono d’accordo in quanto è molto più facile convincerti che la tua build è stata effettivamente ripulita dal momento che puoi semplicemente cancellare la cartella di costruzione e ricominciare da capo. Costruire con CMake è in realtà piuttosto semplice, quindi faremo pagare in anticipo:

Terminale
  1. mkdir build
  2. cd build
  3. cmake -G “Unix Makefiles” ..

Nota: se si utilizza Cygwin, è possibile che venga visualizzato un avviso.

mkdir build
Crea la directory in cui creare la nostra applicazione. In questo esempio è una sottodirectory della directory sorgente, ma potrebbe essere ovunque. Con il build che accade al di fuori dell’albero delle sorgenti possiamo facilmente ripulire semplicemente rimuovendo la directory di build.
cd build
Passare alla directory build e lavorarci.
cmake -G “Unix Makefiles” ..
Utilizzare CMake per impostare una build utilizzando Unix Makefiles.

Grazie! per l’utilizzo della Guida di Linuxiano.

Trovi questo tutorial utile? Condividi con i tuoi amici per tenerlo in vita.
Sii il primo a commentare, apprezzo i tuoi suggerimenti. Per ulteriori domande potete commentare qui sotto.