> For the complete documentation index, see [llms.txt](https://skkv-itmo.gitbook.io/c-cpp-cookies/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://skkv-itmo.gitbook.io/c-cpp-cookies/ide-features/build-configurations.md).

# Конфигурации сборки / Build configurations

Конфигурация определяет как проекты/решения будут собираться - с какими настройками, в какие директории будут складываться временные файлы, как будет называться результирующий файл и прочее.

Часто используемые конфигурации:

* **Debug** - код не оптимизируется (`-O0`), работает медленно, но хорошо работает отладчик.
* **Release** - код оптимизируется (`-O2` или `-O3`), работает быстро, но под отладчиком не видно значения переменных, не работают точки остановок отладки и прочее.

В **`CMake`** (`CMAKE_BUILD_TYPE`) также выделяют:

* **RelWithDebInfo** - код с оптимизацией и некоторой отладочной информацией.
* **MinSizeRel** - оптимизация на минимальный размер кода.

В **Debug** конфигурации неинициализированные локальные переменные нередко инициализируются специальным, так называемым, "мусором" (`0xBAADF00D`, `0xCCCCCCCC` и другие) для упрощения отладки. В **Release** же ничего не инициализируется и неинициализированные переменные содержат то, что оказалось в памяти (часто `0`, но это не гарантируется).
