Modèle .gitignore C++ expliqué
Explique pourquoi C++.gitignore ignore les objets, bibliothèques et exécutables, l'arborescence de build CMake, compile_commands.json et le dossier d'installation de vcpkg, ainsi que le piège de la règle Makefile.
C++.gitignore reprend des règles d'artefacts de compilation proches du modèle C et y ajoute l'arborescence de build CMake, les résultats de CTest et le dossier d'installation du mode manifeste de vcpkg. Comme le modèle Fortran du dépôt de modèles pointe directement vers ce fichier, il contient aussi des règles pour les fichiers de modules Fortran (.mod, .smod).
La ligne la plus délicate est Makefile. Elle vise à bloquer les Makefile générés par CMake, mais dans un projet qui se construit avec un Makefile écrit à la main, ce fichier est lui aussi ignoré.
Explication règle par règle
| Motif | Ce qui est ignoré et pourquoi |
|---|---|
*.o*.obj*.slo*.lo*.d*.gch*.pch | Objets et cache d'en-têtesRésultats de compilation par unité de traduction, fichiers de dépendances et en-têtes précompilés. Tous sont régénérés à partir des sources. |
*.so*.dylib*.dll*.so.**.a*.lib*.lai*.la*.exe*.out*.app | Bibliothèques et exécutablesRésultats de l'édition de liens. Ils sont produits différemment selon la plateforme et se distribuent via des releases, pas via le dépôt. |
build/Build/build-*/CMakeFiles/CMakeCache.txtcmake_install.cmakeinstall_manifest.txt | Arborescence de build CMakeCache et fichiers générés par CMake lors de l'étape de configuration. CMakeCache.txt enregistre le chemin du compilateur de votre machine et ne sert à rien aux autres. |
Makefile | Makefile générésBloque les Makefile créés dans l'arborescence des sources par le générateur Unix Makefiles de CMake. Sans barre oblique, tout Makefile à toute profondeur est ignoré. |
compile_commands.jsonvcpkg_installed/Testing/.cache/ | Artefacts d'outilsBase de données de compilation lue par clangd et d'autres, paquets installés par vcpkg, résultats de CTest et cache d'index de clangd. Tout dépend de l'environnement local. |
*.pdb*.ilk*.dwo*.tmp*.log*.bak*.swp | Informations de débogage et fichiers temporairesSymboles de débogage, fichiers de liaison incrémentale, fichiers temporaires et de sauvegarde des éditeurs. |
*.mod*.smod | Modules FortranFichiers d'interface de modules créés par le compilateur Fortran. Sans effet sur un projet purement C++. |
Points d'attention en pratique
- Si vous avez un
Makefileécrit à la main, ajoutez!/Makefileou une règle d'exception pour ce chemin. En saisissant le cheminMakefiledans le testeur de motifs, vous le constaterez tout de suite. - Certaines équipes partagent
compile_commands.jsonvia un lien symbolique à la racine. Dans ce cas, supprimez cette ligne. vcpkg.json(manifeste) etvcpkg-configuration.jsonne sont pas ignorés : commitez-les.- Si vous utilisez CLion, la règle
cmake-build-*/du modèle JetBrains bloque les dossiers de build de l'IDE.
Modèle d'origine
# Prerequisites*.d# Compiled Object files*.slo*.lo*.o*.obj# Precompiled Headers*.gch*.pch# Linker files*.ilk# Debugger Files*.pdb# Compiled Dynamic libraries*.so*.dylib*.dll*.so.*# Fortran module files*.mod*.smod# Compiled Static libraries*.lai*.la*.a*.lib# Executables*.exe*.out*.app# Build directoriesbuild/Build/build-*/# CMake generated filesCMakeFiles/CMakeCache.txtcmake_install.cmakeMakefileinstall_manifest.txtcompile_commands.json# Temporary files*.tmp*.log*.bak*.swp# vcpkgvcpkg_installed/# debug information files*.dwo# test output & cacheTesting/.cache/
Source des modèles : github/gitignore/C++.gitignore @356fd7b (2026-09-11) · CC0-1.0