github/gitignore · C++.gitignore
C++ .gitignore テンプレート解説
C++.gitignore がオブジェクト・ライブラリ・実行ファイルと CMake のビルドツリー、compile_commands.json、vcpkg のインストールフォルダーを無視する理由と、Makefile ルールの落とし穴を説明します。
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.txt | CMake ビルドツリー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*.smod | Fortran モジュールFortran コンパイラーが作るモジュールインターフェースファイルである。純粋な C++ プロジェクトには影響しない。 |
実務での注意点
- 手書きの
Makefileがあるなら、!/Makefileまたはそのパスの例外ルールを追加する。パターンテスターにMakefileのパスを入れて確認すればすぐにわかる。 compile_commands.jsonをルートにシンボリックリンクで置いて共有するチームもある。その場合はこの行を削除する。vcpkg.json(マニフェスト)とvcpkg-configuration.jsonは無視の対象ではないのでコミットする。- CLion を使うなら、JetBrains テンプレートの
cmake-build-*/ルールが IDE のビルドフォルダーを防いでくれる。
元のテンプレート
C++.gitignore
# 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