# Build profiles DCR supports two profiles: - `debug` (default) - `release` ## How to select ```sh dcr build --debug dcr build --release dcr run --release dcr clean --debug ``` You can also add `--force` or `--clean` to `build`/`run`. ## Default profile flags ### GCC/Clang-like toolchains - `debug`: `-O0 -g -Wall -Wextra -fno-omit-frame-pointer -DDCR_DEBUG` - `release`: `-O3 -DNDEBUG` ### MSVC toolchain - `debug`: `/Od /Zi /W4 /DDCR_DEBUG /Oy-` - `release`: `/O2 /DNDEBUG` ## Artifacts By default: - `target/debug/` (or `.exe` on Windows) - `target/release/` (or `.exe` on Windows) Default compiler flags: GCC/Clang: - `debug`: `-O0 -g -Wall -Wextra -fno-omit-frame-pointer -DDCR_DEBUG` - `release`: `-O3 -DNDEBUG` MSVC: - `debug`: `/Od /Zi /W4 /DDCR_DEBUG /Oy-` - `release`: `/O2 /DNDEBUG` Static library mode (`kind = "staticlib"`): - Linux/macOS: `lib.a` - Windows: `.lib` Shared library mode (`kind = "sharedlib"`): - Linux: `lib.so` - macOS: `lib.dylib` - Windows: `.dll` ## Profile overrides Use `[build.debug]` and `[build.release]` to override build settings per profile. All values inherit from `[build]`. If a field is present in the profile table, it replaces the base value. For arrays (like `cflags`/`ldflags`), the profile value is appended to the base array. ```toml [build.debug] cflags = ["-g3"] [build.release] cflags = ["-O3"] ldflags = ["-s"] ```