Le CMakeLists.txt
est le dernier fichier que l'on va étudier. Pour expliquer toutes les possibilités offertes par CMake, il faudrait un tutoriel dédié, donc ici, on va juste faire un résumé pour bien commencer.
CMake permet (entre autres choses) de générer un makefile utilisable par Make
. Make
est un outil permettant d'automatiser la compilation de projet en C/C++.
Voici un exemple de Makefile écrit à la main :
On peut définir des variables (par exemple LEX_INPUT = analyse.l
) puis définir des travaux à faire.
Par exemple :
On a un travail qui va générer un fichier appelé $(YACC_OUTPUT)
. Ce travail dépend du fichier $(YACC_INPUT)
. Si ce fichier a été modifié en deux lancement de make, alors le travail sera lancé. Le travail à effectuer est constitué de deux lignes de commandes (juste en dessous : mkdir et bison).
Tout ceci représente un graphe de dépendance avec comme racine le premier travail :
Ce travail génère le fichier $(GCC_OUTPUT)
. Ce travail dépend des fichiers $(LEX_OUTPUT)
, $(YACC_OUTPUT)
et $(OTHER_OUTPUT)
.
Pour résumer, on peut représenter ce makefile comme ceci :
Sur un projet de quelques fichiers, c'est faisable d'écrire le makefile
à la main mais pour un projet comme Arcane, il est nécessaire d'utiliser un outil tier comme CMake.
CMake va, lui, utiliser des CMakeLists.txt
pour générer des makefiles
. CMakeLists.txt
contient les informations nécessaires pour construire ce makefile
.
Voici le CMakeLists.txt fournie par arcane_template
:
Commençons :
Cette première ligne demande la présence de la version 3.16 ou plus de CMake. Ça permet de s'assurer que CMake pourra reconnaitre toutes les commandes qu'on lui donne.
On donne le nom du projet et le langage dans lequel il est écrit (CXX
= C++
).
Notre projet a besoin de Arcane d'installé (voir la prochaine section pour dire à CMake où est installé Arcane).
On donne aussi les différents fichiers qui composeront notre exécutable.
SayHelloModule.hh
vu qu'il est importé par SayHelloModule.cc
. On demande à CMake de générer le fichier SayHello_axl.h
. On donne la position du fichier SayHello.axl
en argument (sans l'extension .axl
). Ici, SayHello.axl
est à la racine de notre projet donc on doit juste mettre SayHello
.
On ajoute les librairies Arcane pour notre projet.
On inclut tous les fichiers sources.
On copie le .config
dans le dossier de build.