
CMake est un outil de plus en plus utilisé pour gérer la compilation des projet.
Un project utilisant CMake est configuré à l'aide d'un fichier CMakeLists.txt. Ce fichier est lisible et éditable par un humain.
Il permet de gérer à plus haut niveau qu'un Makefile des projet ayant des dépendances.
Il possède également l'intérêt de pouvoir être lu par les IDE tels que QtCreator afin de charger un projet.

L'objectif de ce tutoriel est de vous habituer à lire et écrire des CMakeLists.txt de base afin d'être en mesure d'être plus indépendant pour la compilation de vos projet et de pouvoir être en mesure de lire de la documentation dans les cas particuliers que vous pourrez rencontrer en entreprise plus tard.


============================


Placez vous dans le répertoire project.

Créez un sous répertoire src/
Placez dans ce répertoire src/ un fichier main.cpp contenant un code permettant d'afficher un message à l'écran.

Dans le répertoire project, créez un fichier CMakeLists.txt

Placez y les lignes suivantes:

- Premièrement, il est nécessaire d'indiquer la version minimale de CMake nécessaire à la lecture du CMakeLists.txt à l'aide de la commande CMAKE_MINIMUM_REQUIRED.
Placez y par exemple:
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)

- Deuxièmement, donnons un nom au projet courant. Par exemple main, écrivez pour cela la ligne suivante:
PROJECT( main )

- Troisièmement, nous allons récupérer les fichiers sources du projet. Pour cela, CMake dispose de la commande FILE permettant de trouver et de stocker une suite de chemin de fichiers dans une variable. Utilisez la ligne suivante:
FILE( GLOB
      source_files
      src/main.cpp
)

Ici on a indiqué directement le fichier correspondant au code, et on stocke celui-ci dans la variable source_files.


- Dernièrement, indiquez les fichiers nécessaires à la création de l'executable main par le biais de la commande ADD_EXECUTABLE. Ici, on utilisera la ligne suivante:
ADD_EXECUTABLE(
    main
    ${source_files}
)


Une fois ce fichier écrit, compilez de manière classique.
C'est à dire pour rappel (à partir du répertoire project/):

#creation d'un repertoire temporaire stockant les fichiers de compilation
mkdir build
cd build

# Lancement de CMake sur le fichier CMakeLists.txt situé dans le répertoire en amont
#  notez les deux points (indiquant le répertoire en amont du répertoire courant)
cmake ..

# Lancez la compilation a partir du Makefile qui a été généré suite à l'appel à CMake
make

# Lancez l'executable depuis le répertoire en amont
cd ..
build/main

