github/gitignore · C.gitignore
C .gitignore テンプレート解説
C.gitignore がオブジェクトファイル、静的・共有ライブラリ、実行ファイル、デバッグ情報、Linux カーネルモジュールのビルドファイルを無視する理由を説明します。
C.gitignore はコンパイラーとリンカーが作る中間ファイルと成果物を拡張子単位で防ぐ。gcc・clang・MSVC のどれでも使えるよう、複数プラットフォームの拡張子が一緒に入っている。
Make や CMake のようなビルドシステムのファイルは扱わない。CMake を使うなら CMake テンプレートか、CMake のルールが含まれている C++ テンプレートを参考にする。
ルール別の解説
| パターン | 何を、なぜ無視するか |
|---|---|
*.o*.obj*.ko*.elf*.d | オブジェクト・依存関係ファイルソースファイルごとに生成されるコンパイル結果(.o・.obj)とカーネルモジュール(.ko)、ELF バイナリ、コンパイラーが作るヘッダー依存リスト(.d)である。 |
*.gch*.pch | プリコンパイル済みヘッダーGCC と MSVC の precompiled header である。コンパイラーのバージョンとオプションに結びついているため、他の環境では使えない。 |
*.lib*.a*.la*.lo*.dll*.so*.so.**.dylib | ライブラリ静的ライブラリ(.a・.lib)、libtool ファイル(.la・.lo)、共有ライブラリである。*.so.* は libfoo.so.1.2 のようなバージョン付きの名前を捉える。 |
*.exe*.out*.app*.i*86*.x86_64*.hex | 実行ファイルリンク結果とマイクロコントローラー用の HEX イメージである。a.out も *.out に一致する。 |
*.dSYM/*.su*.idb*.pdb*.dwo | デバッグ情報macOS のシンボルバンドル、GCC の -fstack-usage の結果(.su)、MSVC のデバッグデータベース、分割された DWARF(.dwo)である。 |
*.mod**.cmd.tmp_versions/modules.orderModule.symversMkfile.olddkms.conf | Linux カーネルモジュールのビルドカーネルのビルドシステム(kbuild)がモジュールを作るときに残すファイルである。ドライバーを開発していなければほとんど目にしない。 |
*.ilk*.map*.exp | リンカーの副産物MSVC のインクリメンタルリンクファイル、リンカーマップ、エクスポートファイルである。 |
実務での注意点
- ビルドディレクトリ(
build/)はこのテンプレートにない。out-of-source ビルドを使うなら/build/を直接追加する。 *.mod*は.modで始まるすべての拡張子に一致するため、別の用途の.modファイル(例: データファイル)があるなら例外を設ける。- ファームウェアのリポジトリで配布用の
.hexを保管する必要があるなら、!release/*.hexのように特定のパスだけを再び含める。
元のテンプレート
C.gitignore
# Prerequisites*.d# Object files*.o*.ko*.obj*.elf# Linker output*.ilk*.map*.exp# Precompiled Headers*.gch*.pch# Libraries*.lib*.a*.la*.lo# Shared objects (inc. Windows DLLs)*.dll*.so*.so.**.dylib# Executables*.exe*.out*.app*.i*86*.x86_64*.hex# Debug files*.dSYM/*.su*.idb*.pdb# Kernel Module Compile Results*.mod**.cmd.tmp_versions/modules.orderModule.symversMkfile.olddkms.conf# debug information files*.dwo
テンプレートの出典: github/gitignore/C.gitignore @356fd7b (2026-09-11) · CC0-1.0