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生成された MakefileCMake の 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

一緒に使うテンプレート

ほかのテンプレートの解説