Guide pédagogique
CMake pour projets C — Guide complet
CMake est le système de build incontournable pour les projets C et C++. Découvrez CMakeLists.txt, les cibles modernes, les bibliothèques et les tests unitaires.
Qu'est-ce que CMake ?
CMake est un outil de génération de systèmes de build multiplateforme. Il ne compile pas directement le code ; il génère des fichiers de build (Makefile, Ninja, Visual Studio) à partir d'un fichier CMakeLists.txt. Il est le standard de facto des projets C et C++ open-source.
Quelle est la différence entre CMake et Make ?
Make lit un Makefile et exécute des règles de compilation. CMake génère ce Makefile automatiquement. CMake est un méta-build system : il abstrait le système sous-jacent et permet de cibler Linux (Makefile), Windows (MSBuild) et macOS (Xcode) avec le même CMakeLists.txt.
Comment structurer un projet C avec CMake ?
Structure standard : répertoire racine avec CMakeLists.txt, dossier src/ pour les sources, include/ pour les en-têtes.
Commandes clés : cmake_minimum_required(), project(), add_executable() ou add_library(). Pour les tests : enable_testing() et add_test().
Comment ajouter une bibliothèque avec CMake ?
Avec CMake 3.x :
add_library(monlib STATIC src/monlib.c)target_include_directories(monlib PUBLIC include/)target_link_libraries(mon_exe PRIVATE monlib)
CMake gère automatiquement les dépendances de compilation.
Comment lancer les tests unitaires avec CMake ?
Ajoutez enable_testing() dans CMakeLists.txt, puis add_test(NAME mon_test COMMAND mon_exe).
Après cmake --build ., lancez ctest dans le répertoire de build. Options : ctest -R pattern (filtre) et ctest -V (verbeux).
Qu'est-ce qu'une target CMake moderne ?
Une target CMake est une unité de build auto-descriptive. Les trois commandes clés :
target_include_directories(lib PUBLIC include/)— expose les headerstarget_compile_options(lib PRIVATE -Wall -Wextra)— options de compilationtarget_link_libraries(exe PRIVATE lib)— lie et hérite les dépendances