# 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 `debug` or `release` profiles (`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.toml` with `[package]`, `[build]`, `[dependencies]`.
* Recursive source discovery in `src/`:
  * C: `*.c`
  * C++: `*.cpp`, `*.cxx`, `*.cc`
* Compiler selection from `dcr.toml` (`clang`, `gcc`, `cl`, `clang-cl`, etc.).
* ASM support via `language = "asm"` (GCC/Clang, NASM, GAS).
* Mixed language builds via `language = ["c", "asm"]` and similar combinations.
* Three build kinds:
  * `bin` (default)
  * `staticlib`
  * `sharedlib`
* Optional custom output directory via `build.target`.
* Optional `build.platform` to pass architecture hints (`-march` / `/arch`).
* Optional `build.exclude`/`build.include` for source/header selection.
* Optional `build.roots`/`build.src_disable` to replace the default `src/` root.
* Optional build steps with `build.steps` and `build.post_steps`.
* Optional `build.pkg_config` integration.
* Optional `build.clean` and `build.expect`.
* Optional `[run].cmd` to override run command.
* Workspace builds via `[workspace]` with per-project `dcr.toml`.
* Path dependencies with include/lib resolution and `dcr.lock` generation.

## Important behavior notes

* `dcr.toml` is required for `build`, `run`, and `clean`.
* `run` works only with `build.kind = "bin"`.
* Incremental rebuild tracks source file timestamps and header dependencies (rebuilds when either source or included headers change).
* Object files are always created under `target/<profile>/obj/`.

## Repository

* <https://github.com/dexoron/dcr>
