Plantilla .gitignore de C++ explicada
Explica por qué C++.gitignore ignora objetos, bibliotecas y ejecutables, el árbol de compilación de CMake, compile_commands.json y la carpeta de instalación de vcpkg, y la trampa de la regla Makefile.
C++.gitignore incluye, además de reglas de artefactos de compilación parecidas a las de la plantilla de C, el árbol de compilación de CMake, los resultados de CTest y la carpeta de instalación del modo manifiesto de vcpkg. Como en el repositorio de plantillas la plantilla de Fortran apunta directamente a este archivo, también contiene reglas para archivos de módulo de Fortran (.mod, .smod).
La línea más delicada es Makefile. Es una regla para bloquear los Makefile que genera CMake, pero en un proyecto que compila con un Makefile escrito a mano, también ignora ese archivo.
Explicación regla por regla
| Patrón | Qué ignora y por qué |
|---|---|
*.o*.obj*.slo*.lo*.d*.gch*.pch | Objetos y caché de cabecerasSon los resultados de compilación por unidad de traducción, los archivos de dependencias y las cabeceras precompiladas. Todo se recrea a partir del código fuente. |
*.so*.dylib*.dll*.so.**.a*.lib*.lai*.la*.exe*.out*.app | Bibliotecas y ejecutablesSon productos del enlazado. Se generan de forma distinta en cada plataforma, así que se distribuyen como versiones y no mediante el repositorio. |
build/Build/build-*/CMakeFiles/CMakeCache.txtcmake_install.cmakeinstall_manifest.txt | Árbol de compilación de CMakeSon la caché y los archivos generados que CMake crea en la fase de configuración. CMakeCache.txt guarda las rutas del compilador de tu equipo y no le sirve a nadie más. |
Makefile | Makefile generadosBloquea los Makefile que el generador Unix Makefiles de CMake crea dentro del árbol de código. Al no llevar barra, se ignoran los Makefile a cualquier profundidad. |
compile_commands.jsonvcpkg_installed/Testing/.cache/ | Artefactos de herramientasSon la base de datos de compilación que leen clangd y otros, los paquetes instalados por vcpkg, los resultados de CTest y la caché de índice de clangd. Todo depende del entorno local. |
*.pdb*.ilk*.dwo*.tmp*.log*.bak*.swp | Información de depuración y archivos temporalesSon símbolos de depuración, archivos de enlazado incremental y archivos temporales y de copia de seguridad del editor. |
*.mod*.smod | Módulos de FortranSon los archivos de interfaz de módulo que genera el compilador de Fortran. No afectan a proyectos de C++ puro. |
Precauciones en la práctica
- Si tienes un
Makefileescrito a mano, añade!/Makefileo una regla de excepción para esa ruta. Se ve enseguida si pones la rutaMakefileen el probador de patrones. - Hay equipos que comparten
compile_commands.jsoncomo enlace simbólico en la raíz. En ese caso, borra esta línea. vcpkg.json(manifiesto) yvcpkg-configuration.jsonno se ignoran, así que confírmalos.- Si usas CLion, la regla
cmake-build-*/de la plantilla JetBrains bloquea las carpetas de compilación del IDE.
Plantilla original
# 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/
Origen de las plantillas: github/gitignore/C++.gitignore @356fd7b (2026-09-11) · CC0-1.0