Cross-Compilation
Short Names
DCR supports short platform names:
| Short Name | Full Triple |
|---|---|
linux | x86_64-unknown-linux-gnu |
macos | x86_64-apple-darwin |
windows | x86_64-pc-windows-msvc |
dcr build --target windows
Full Triples
dcr build --target aarch64-unknown-linux-gnu
dcr build --target x86_64-pc-windows-gnu # mingw
dcr build --target armv7-unknown-linux-gnueabihf
clang --target
When using clang, DCR injects --target=<triple> into CFLAGS.
[build]
compiler = "clang"
target = "aarch64-unknown-linux-gnu"
# Auto: cflags += ["--target=aarch64-unknown-linux-gnu"]
Bare-Metal / Freestanding
For targets containing none, -elf, eabi, or baremetal, DCR automatically:
- Disables default flags — no system include paths, no
-llibc - Injects
-ffreestandingat compile time and-nostdlib -staticat link time
You can also enable freestanding mode explicitly:
[build]
freestanding = true
dcr build --target aarch64-none-elf
Target Directory
By default, the compilation output directories are structured as follows:
- Linux and BSD: Always output to
target/<triple>/<profile>/(using host triple if no target is specified). - macOS and Windows (without target): Output to
target/<profile>/. - macOS and Windows (with explicit target): Output to
target/<triple>/<profile>/.