github/gitignore · C++.gitignore

C++ .gitignore 模板详解

说明 C++.gitignore 忽略目标文件、库、可执行文件以及 CMake 构建树、compile_commands.json、vcpkg 安装目录的原因,以及 Makefile 规则的陷阱。

在生成器中打开 与 C, JetBrains, VisualStudioCode, VisualStudio 一起打开

C++.gitignore 在与 C 模板类似的编译产物规则之外,还包含 CMake 构建树、CTest 结果以及 vcpkg 清单模式的安装目录。由于模板仓库中的 Fortran 模板直接指向这个文件,其中也包含 Fortran 模块文件(.mod.smod)的规则。

最需要小心的是 Makefile 这一行。它本意是拦截 CMake 生成的 Makefile,但如果项目用手写的 Makefile 构建,这个文件也会被忽略。

逐条规则详解

模式忽略什么,为什么忽略
*.o*.obj*.slo*.lo*.d*.gch*.pch目标文件与头文件缓存每个翻译单元的编译结果、依赖文件和预编译头。都可以从源码重新生成。
*.so*.dylib*.dll*.so.**.a*.lib*.lai*.la*.exe*.out*.app库与可执行文件链接产物。不同平台生成的结果不同,因此应通过发布而不是仓库分发。
build/Build/build-*/CMakeFiles/CMakeCache.txtcmake_install.cmakeinstall_manifest.txtCMake 构建树CMake 在配置阶段生成的缓存和生成文件。CMakeCache.txt 中保存了本机的编译器路径,对其他人没有用处。
Makefile生成的 Makefile拦截 CMake 的 Unix Makefiles 生成器在源码树中生成的 Makefile。由于没有斜杠,任意深度的 Makefile 都会被忽略。
compile_commands.jsonvcpkg_installed/Testing/.cache/工具产物clangd 等读取的编译数据库、vcpkg 安装的包、CTest 结果以及 clangd 索引缓存。它们都随本地环境而变化。
*.pdb*.ilk*.dwo*.tmp*.log*.bak*.swp调试信息与临时文件调试符号、增量链接文件,以及编辑器的临时和备份文件。
*.mod*.smodFortran 模块Fortran 编译器生成的模块接口文件。对纯 C++ 项目没有影响。

实践中的注意事项

原始模板

C++.gitignore规则 39 行
# 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/

模板来源: github/gitignore/C++.gitignore @356fd7b (2026-09-11) · CC0-1.0

常搭配使用的模板

其他模板详解