Tutoriel sur l'utilisation de Cmake

Introduction

CMake est un outil d'aide à la compilation, il permet de simplifier et d'automatiser certaines tâches fastidieuses de la compilation de programmes, notamment avec gcc. Il permet l'ajout de librairies, la prise en compte de toutes les sources d'un répertoire, il permet d'avoir une gestion de projet plus simple.


Création de l'environnement de développement (les répertoires)

Nous allons ici créer l'architecture de répertoires pour notre projet.

mkdir /home/user/projets_c/projet_A

cd /home/moi/projets_c/projet_A

mkdir src

mkdir build

Le répertoire build va comprendre tous les fichiers générés automatiquement par cmake pour faciliter la compilation et le répertoire src comprendra les fichiers sources du projet.


Le fichier de paramétrage du projet : CMakeLists.txt

Nous allons maintenant créer le fichier qui comprendra toutes les informations liées au projet : CMakeLists.txt.

Celui-ci sera situé à la racine du projet :/home/user/projets_c/projet_A. Le but du CMakeLists.txt est d'être écrit de façon à ce qu'il soit unique et ce quel que soit la plateforme de compilation. Afin de définir des variables spécifiques à la plateforme (chemin vers des librairies spécifiques), on utilisera un autre fichier appelé : CMakeCache.txt. Dans un premier temps pour une question de simplicité, toutes les informations seront inscrites dans le CMakeLists.txt.


CMakeLists.txt

(Cliquez pour faire apparaitre le fichier)

  1. Dans un premier lieu le titre du projet est définit, puis ici un chemin d'accès spécifique à des includes. Dans l'exemple les headers sont issus du projet libre openssl.

  2. Des C_FLAGS sont définits ensuite, ils permettent de lister ici les options de compilation que l'on aurait passé avec un gcc classique. Ici les options spécifient que l'on affichera toutes les erreurs et que les Warning seront convertis en erreur. Ceci permet d'assurer une compilation du projet sans aucun avertissement puisque q'une compilation avec des erreurs n'aboutira pas

  3. La partie qui suit précise la localisation des différents fichiers sources. Ici ils seront dans le répertoire src et tous les fichiers qui sont à l'intérieur seront inclus au moment de la compilation.

  4. Nous arrivons à une section qui nous permet ici de spécifier le nom du fichier éxecutable, qui sera toto en précisant bien les fichiers sources précédement définits.

  5. Enfin la dernière partie de ce fichier permet de faire le lien entre les librairies à inclure et le programme en cours. On précise donc le nom de l'executable qui va profiter des ces librairies, puis on peut mettre les .a des librairies avec leur chemin absolu pour être sur que se sera cette librairie là et non une autre qui sera utilisée. Ce type d'astuce est nécessaire si vous avez par exemple 2 versions d'openssl sur votre système (une installée par votre gestionnaire de paquet, et l'autre tirée de l'archive par exemple) et que vous désirez choisir précisement laquelle utiliser.


Compilation

Maintenant que nous avons préparé notre projet à être compilé nous pouvons passer à l'action.

génération du makefile et autres fichiers :

cd /home/user/projets_c/projet_A/build

cmake ..

Dans ce cas tous les fichiers seront créés dans build

On peut taper désormais :

make VERBOSE=1

Grace à l'option VERBOSE nous disposerons de toutes les tâches éxecutées par cmake ainsi que des informations nécessaires pour corriger les éventuelles erreurs de code.

Si la compilation s'est déroulée sans accros on peut éexcuter notre programme qui est dans le répertoire build :

./toto


Informations diverses

Pour relancer une compilation si la quantité de fichiers sources n'a pas changé il suffit de relancer depuis build :

make

Pour relancer une compilation si la quantité de fichiers sources a changé il suffit de relancer la procédure initiale :

cmake ..

make


Pour tout réinitialiser et recommencer une compilation comme si c'était la première, il faut supprimer le contenu du répertoire build et relancer la procédure initiale.

cd /home/user/projets_c/projet_A/build

rm -rf *

cmake ..

make


Liens

  • Le cmake selon developpez.com

  • Positionnement et Statistiques Gratuites Ajoutez votre site Top des sites