mirror of
https://github.com/dexoron/dcr.git
synced 2026-10-21 10:08:30 +00:00
- `build.steps` for pre-build generators (e.g., `moc`/`uic`/`rcc`)
- `build.pkg_config` for `pkg-config`-driven cflags/ldflags resolution
- `[toolchain]` support for `uic`, `moc`, `rcc`
- Step command variables (`{uic}`, `{moc}`, `{rcc}`, `{cflags}`, `{stem}`, `{in}`, `{out}`)
- `{profile}` placeholder support for dependency paths
Introduction
DCR (Dexoron Cargo Realization) is a Cargo-style CLI for C/C++ projects.
Current DCR focuses on a simple, predictable workflow:
- create or initialize a project (
dcr new,dcr init) - build with
debugorreleaseprofiles (dcr build) - run binaries (
dcr run) - clean artifacts (
dcr clean) - update the installed binary (
dcr --update)
What is implemented in this version
- Project configuration in
dcr.tomlwith[package],[build],[dependencies]. - Recursive source discovery in
src/:- C:
*.c - C++:
*.cpp,*.cxx,*.cc
- C:
- Compiler selection from
dcr.toml(clang,gcc,cl,clang-cl, etc.). - ASM support via
language = "asm"(GCC/Clang, NASM, GAS). - Three build kinds:
bin(default)staticlibsharedlib
- Optional custom output directory via
build.target. - Optional
build.platformto pass architecture hints (-march//arch). - Workspace builds via
[workspace]with per-projectdcr.toml. - Path dependencies with include/lib resolution and
dcr.lockgeneration.
Important behavior notes
dcr.tomlis required forbuild,run, andclean.runworks only withbuild.kind = "bin".- Incremental rebuild currently tracks source file timestamps (not header dependency graphs).
- Object files are always created under
target/<profile>/obj/.