Template .gitignore do C++ explicado
Explica por que o C++.gitignore ignora objetos, bibliotecas e executáveis, a árvore de build do CMake, o compile_commands.json e a pasta de instalação do vcpkg, e a armadilha da regra Makefile.
O C++.gitignore inclui, além de regras de artefatos de compilação parecidas com as do template de C, a árvore de build do CMake, os resultados do CTest e a pasta de instalação do modo manifesto do vcpkg. Como no repositório de templates o template de Fortran aponta diretamente para este arquivo, ele também contém regras para arquivos de módulo do Fortran (.mod, .smod).
A linha mais delicada é Makefile. É uma regra para bloquear os Makefiles gerados pelo CMake, mas, em um projeto que compila com um Makefile escrito à mão, esse arquivo também é ignorado.
Explicação regra por regra
| Padrão | O que ignora e por quê |
|---|---|
*.o*.obj*.slo*.lo*.d*.gch*.pch | Objetos e cache de headersSão os resultados de compilação por unidade de tradução, os arquivos de dependências e os headers pré-compilados. Tudo é recriado a partir do código-fonte. |
*.so*.dylib*.dll*.so.**.a*.lib*.lai*.la*.exe*.out*.app | Bibliotecas e executáveisSão produtos da linkagem. São gerados de forma diferente em cada plataforma, então são distribuídos como release, não pelo repositório. |
build/Build/build-*/CMakeFiles/CMakeCache.txtcmake_install.cmakeinstall_manifest.txt | Árvore de build do CMakeSão o cache e os arquivos gerados que o CMake cria na etapa de configuração. O CMakeCache.txt guarda os caminhos do compilador do seu computador e não serve para mais ninguém. |
Makefile | Makefiles geradosBloqueia os Makefiles que o gerador Unix Makefiles do CMake cria dentro da árvore de código. Por não ter barra, Makefile é ignorado em qualquer profundidade. |
compile_commands.jsonvcpkg_installed/Testing/.cache/ | Artefatos de ferramentasSão o banco de dados de compilação lido pelo clangd e outros, os pacotes instalados pelo vcpkg, os resultados do CTest e o cache de índice do clangd. Tudo depende do ambiente local. |
*.pdb*.ilk*.dwo*.tmp*.log*.bak*.swp | Informações de depuração e arquivos temporáriosSão símbolos de depuração, arquivos de linkagem incremental e arquivos temporários e de backup do editor. |
*.mod*.smod | Módulos do FortranSão os arquivos de interface de módulo gerados pelo compilador Fortran. Não afetam projetos de C++ puro. |
Cuidados na prática
- Se você tem um
Makefileescrito à mão, adicione!/Makefileou uma regra de exceção para esse caminho. Fica visível na hora se você colocar o caminhoMakefileno testador de padrões. - Há equipes que compartilham o
compile_commands.jsoncomo link simbólico na raiz. Nesse caso, apague esta linha. vcpkg.json(manifesto) evcpkg-configuration.jsonnão são ignorados, então commite-os.- Se você usa o CLion, a regra
cmake-build-*/do template JetBrains bloqueia as pastas de build da IDE.
Template 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/
Origem dos templates: github/gitignore/C++.gitignore @356fd7b (2026-09-11) · CC0-1.0