Files
dcr/docs/configuration/build-profiles.md
Dexoron 5f0dca4bb3 Added:
- `dcr gen` command for IDE integration and build tool support
    - `dcr gen project-info`: Output project metadata as JSON
    - `dcr gen compile-commands`: Generate `compile_commands.json` for clangd and clang-tidy
    - `dcr gen vscode`: Generate VS Code `.vscode/` integration (launch.json, tasks.json, settings.json)
    - `dcr gen clion`: Generate JetBrains CLion `.idea/` integration (run configurations, build targets)
- Full workspace support for all `gen` subcommands
2026-03-19 00:02:04 +08:00

1.4 KiB

Build profiles

DCR supports two profiles:

  • debug (default)
  • release

How to select

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 -march=native

MSVC toolchain

  • debug: /Od /Zi /W4 /DDCR_DEBUG /Oy-
  • release: /O2 /DNDEBUG

Artifacts

By default:

  • target/debug/<name> (or .exe on Windows)
  • target/release/<name> (or .exe on Windows)

Default compiler flags:

GCC/Clang:

  • debug: -O0 -g -Wall -Wextra -fno-omit-frame-pointer -DDCR_DEBUG
  • release: -O3 -DNDEBUG -march=native

MSVC:

  • debug: /Od /Zi /W4 /DDCR_DEBUG /Oy-
  • release: /O2 /DNDEBUG

Static library mode (kind = "staticlib"):

  • Linux/macOS: lib<name>.a
  • Windows: <name>.lib

Shared library mode (kind = "sharedlib"):

  • Linux: lib<name>.so
  • macOS: lib<name>.dylib
  • Windows: <name>.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.

[build.debug]
cflags = ["-g3"]

[build.release]
cflags = ["-O3"]
ldflags = ["-s"]