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