diff --git a/docs-crowdin-export/ru-RU/docs/reference/build-profiles.mdx.mdx b/docs-crowdin-export/ru-RU/docs/reference/build-profiles.mdx.mdx new file mode 100644 index 0000000..694efb0 --- /dev/null +++ b/docs-crowdin-export/ru-RU/docs/reference/build-profiles.mdx.mdx @@ -0,0 +1,82 @@ +--- +sidebar_label: Build profiles +--- + +# Build Profiles + +Profiles allow overriding `[build]` fields for specific build modes. + +## Configuration + +```toml +[build] +language = "c" +standard = "c17" +cflags = ["-Wall"] + +[build.debug] +cflags = ["-O0", "-g"] + +[build.release] +cflags = ["-O3", "-DNDEBUG"] +``` + +## Merge rules + +Fields from `[build.\]` are merged on top of `[build]`: + +* **Scalar fields** (strings, numbers, bools) — replaced +* **Arrays** (`cflags`, `ldflags`, ...) — **appended** (extend the `[build]` array) + +Set `inherit = false` to disable array inheritance (only profile's own arrays are used). + +## Built-in profiles + +The default flags for each profile are composed from three config fields: + +| Field | debug default | release default | +| ----------- | ------------------ | --------------- | +| `opt_level` | `"0"` | `"3"` | +| `debug` | `true` | `false` | +| `warnings` | `["all", "extra"]` | `[]` | + +Which produce the equivalent compiler flags: + +| Profile | Effective flags | +| --------- | ---------------------------------------------------------- | +| `debug` | `-O0 -g -Wall -Wextra -fno-omit-frame-pointer -DDCR_DEBUG` | +| `release` | `-O3 -DNDEBUG` | + +Additional build options can be toggled per-profile: + +```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 profiles + +```toml +[build.linux] +cflags = ["-DLINUX"] + +[build.windows.debug] +cflags = ["-DWIN32", "-O0", "-g"] +``` + +Application order (highest priority first): + +1. `[build.\.\]` +2. `[build.\.\]` +3. `[build.\]` +4. `[build.\]` +5. `[build]`