--- sidebar_label: dcr build --profile lto --- # Встроенные профили Профили позволяют переопределять любые поля секции `[build]` для конкретного режима сборки. ## Конфигурация ```toml [build] language = "c" standard = "c17" cflags = ["-Wall"] [build.debug] cflags = ["-O0", "-g"] [build.release] cflags = ["-O3", "-flto"] ``` ## Правила Поля из `[build.\]` **мержатся поверх** `[build]` * **Скалярные поля** (строки, числа, логические значения) — заменены * Массивы (`cflags`, `ldflags`, ...) **заменяются полностью**, а не дополняются Установите `inherit = false`, чтобы отключить наследование массивов (будут использоваться только собственные массивы профиля). ## Кастомные профили Флаги по умолчанию для каждого профиля формируются из трёх полей конфигурации: | Поле | Default cflags | Профили сборки | | ---------------- | ------------------ | -------------- | | `opt_level` | `-O0 -g` | `"3"` | | `debug` | `true` | `false` | | `предупреждения` | `["all", "extra"]` | `[]` | Которые генерируют соответствующие флаги компилятора: | Профиль | Действующие флаги | | ------- | ---------------------------------------------------------- | | `debug` | `-O0 -g -Wall -Wextra -fno-omit-frame-pointer -DDCR_DEBUG` | | `релиз` | `-O3 -DNDEBUG` | Дополнительные параметры сборки можно включать или отключать для каждого профиля: ```toml [build.release] opt_level = "z" lto = true strip = true panic = "abort" codegen-units = "1" [build.debug] opt_level = "1" debug = false warnings = ["all", "error"] ``` ## Target-specific профили ```toml [build.linux] cflags = ["-DLINUX"] [build.windows.debug] cflags = ["-DWIN32", "-O0", "-g"] ``` Порядок применения (в порядке убывания приоритета): 1. `[build.\.\]` 2. `[build.\.\]` 3. ]`или`[build.\]\` 4. `[build.\]`. 5. `[build]`