github/gitignore · C++.gitignore

Разбор шаблона .gitignore для C++

Почему C++.gitignore игнорирует объектные файлы, библиотеки, исполняемые файлы, дерево сборки CMake, compile_commands.json и папку установки vcpkg, и в чём ловушка правила Makefile.

Открыть в генераторе Открыть вместе с C, JetBrains, VisualStudioCode, VisualStudio

C++.gitignore к правилам для артефактов компиляции, похожим на шаблон C, добавляет дерево сборки CMake, результаты CTest и папку установки vcpkg в режиме манифеста. В репозитории шаблонов шаблон Fortran прямо ссылается на этот файл, поэтому в нём есть и правила для файлов модулей Fortran (.mod, .smod).

Осторожнее всего нужно быть со строкой Makefile. Правило задумано для блокировки Makefile, сгенерированных CMake, но в проекте, который собирается написанным вручную 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Сгенерированный MakefileБлокирует Makefile, созданные генератором Unix Makefiles из CMake внутри дерева исходников. Слэша нет, поэтому Makefile игнорируется на любой глубине.
compile_commands.jsonvcpkg_installed/Testing/.cache/Артефакты инструментовБаза данных компиляции, которую читает clangd и другие инструменты, пакеты, установленные vcpkg, результаты CTest и кэш индекса clangd. Всё это зависит от локального окружения.
*.pdb*.ilk*.dwo*.tmp*.log*.bak*.swpОтладочная информация и временные файлыОтладочные символы, файлы инкрементной компоновки, временные и резервные файлы редакторов.
*.mod*.smodМодули FortranФайлы интерфейсов модулей, которые создаёт компилятор 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

Шаблоны, используемые вместе

Разборы других шаблонов