0Pricing
C++ Academy · Leçon

Organisation d’un projet CMake et CMakeLists.txt

Organiser l’arborescence des sources et écrire des fichiers CMakeLists.txt élémentaires

Organisation d’un projet CMake et CMakeLists.txt est une leçon C++ Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C++ Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C++ Academy comprend 4 leçons au total.

Pourquoi utiliser CMake ?

CMake est le générateur de systèmes de compilation de référence pour C++. Il produit des fichiers de projet pour Make, Ninja, Visual Studio et Xcode à partir d’une description unique.

CMakeLists.txt minimal

Le plus petit CMakeLists.txt utile pour un seul exécutable.

cmake_minimum_required(VERSION 3.20)
project(MyApp LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_executable(myapp main.cpp)

Compilations hors arborescence source

Compilez toujours dans un répertoire séparé afin de garder l’arborescence source propre.

# from project root
cmake -B build
cmake --build build

Organisation standard d’un projet

Une structure claire :

  • CMakeLists.txt
  • src/ — fichiers sources
  • include/ — en-têtes publics
  • tests/ — tests
  • third_party/ — dépendances intégrées

Ajouter des sous-répertoires

Parcourez récursivement les sous-répertoires qui possèdent leur propre CMakeLists.txt.

# top-level
add_subdirectory(src)
add_subdirectory(tests)

Variables et propriétés

Définissez les variables avec set. Lisez-les avec ${var}. Variables courantes : CMAKE_BUILD_TYPE, CMAKE_CXX_FLAGS.

set(CMAKE_BUILD_TYPE Release)
set(SOURCES src/a.cpp src/b.cpp)

Rechercher dynamiquement des fichiers

Utilisez file(GLOB ...) pour les prototypes rapides. En production, énumérez explicitement les sources afin que CMake soit relancé lorsque des fichiers sont ajoutés.

# Discouraged for production
file(GLOB SOURCES "src/*.cpp")

# Preferred
add_executable(myapp src/main.cpp src/util.cpp)

Configurations de compilation

Configurations courantes : Debug, Release, RelWithDebInfo, MinSizeRel. Définissez-en une avec -DCMAKE_BUILD_TYPE=Release.

cmake -B build -DCMAKE_BUILD_TYPE=Release

Avertissements du compilateur

Activez les avertissements en tant que propriétés de la cible afin de conserver la portabilité entre les compilateurs.

target_compile_options(myapp PRIVATE
    $<$<CXX_COMPILER_ID:GNU,Clang>:-Wall -Wextra>
    $<$<CXX_COMPILER_ID:MSVC>:/W4>
)

Style CMake moderne

Préférez les commandes fondées sur les cibles, telles que target_*, aux commandes globales. Elles limitent proprement la portée des propriétés à des cibles précises.

CMakePresets.json (CMake 3.19+)

Définissez des configurations réutilisables dans CMakePresets.json, partagées entre les membres de l’équipe.

Installer le projet

Utilisez les commandes install pour copier les exécutables, les bibliothèques et les en-têtes vers les chemins d’installation.

install(TARGETS myapp DESTINATION bin)
install(DIRECTORY include/ DESTINATION include)

Vérification rapide

Quelle organisation de répertoires est recommandée lors de l’exécution de CMake ?

Récapitulatif

CMake est le générateur standard de systèmes de compilation C++. Écrivez un CMakeLists.txt, compilez hors de l’arborescence source et utilisez des commandes fondées sur les cibles. Utilisez les préréglages pour les configurations partagées et les propriétés pour les options du compilateur.

Questions Fréquemment Posées

La leçon « Organisation d’un projet CMake et CMakeLists.txt » est-elle gratuite ?

Oui — le texte complet de « Organisation d’un projet CMake et CMakeLists.txt » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C++ Academy, passe à CoddyKit PRO. Le cours C++ Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Organisation d’un projet CMake et CMakeLists.txt » ?

Organiser l’arborescence des sources et écrire des fichiers CMakeLists.txt élémentaires Tu pratiques C++ Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C++ Academy ?

Aucune expérience préalable n'est requise. C++ Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Organisation d’un projet CMake et CMakeLists.txt » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C++ Academy ?

Oui. Chaque leçon C++ Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Organisation d’un projet CMake et CMakeLists.txt
  2. Cibles, liaison et visibilité PUBLIC, PRIVATE
  3. Utiliser vcpkg et Conan pour les dépendances
  4. Générer des fichiers pour les IDE et compiler sur plusieurs plateformes
← Retour à C++ Academy