mirror of
https://github.com/dexoron/dcr.git
synced 2026-10-21 09:08:30 +00:00
73 lines
1.4 KiB
Plaintext
73 lines
1.4 KiB
Plaintext
---
|
|
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.<profile>]` 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
|
|
|
|
| Profile | Default cflags |
|
|
|---------|---------------|
|
|
| `debug` | `-O0 -g -Wall -Wextra -fno-omit-frame-pointer -DDCR_DEBUG` |
|
|
| `release` | `-O3 -DNDEBUG` |
|
|
|
|
These defaults are composed from the `opt_level`, `debug`, and `warnings` fields and can
|
|
be overridden 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.<target>.<profile>]`
|
|
2. `[build.<profile>.<target>]`
|
|
3. `[build.<target>]`
|
|
4. `[build.<profile>]`
|
|
5. `[build]`
|