Skip to main content

Build Variants

Build Variants

Build variants allow for different build configurations beyond just Debug/Release:

[variants]
default = "standard"

[variants.variants.standard]
description = "Standard build"

[variants.variants.performance]
description = "Optimized build"
optimize = "aggressive"
lto = true
defines = ["HIGH_PERF=1"]

[variants.variants.memory_safety]
description = "Build with memory safety checks"
sanitizers = ["address", "undefined"]
hardening = "full"
defines = ["ENABLE_MEMORY_SAFETY=1"]

[variants.variants.minimal]
description = "Minimal size build"
optimize = "size"
exceptions = false
rtti = false

Building with variants:

cforge build --variant performance
cforge build --variant memory_safety

Combining with Build Configurations

Variants work alongside standard build configurations:

[build.config.debug]
optimize = "debug"
debug_info = true
warnings = "all"

[build.config.release]
optimize = "speed"
lto = true

[variants.variants.asan]
sanitizers = ["address"]
# Debug with address sanitizer
cforge build -c Debug --variant asan

# Release with address sanitizer
cforge build -c Release --variant asan