mirror of
https://github.com/dexoron/dcr.git
synced 2026-10-21 12:38:30 +00:00
- `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
1.8 KiB
1.8 KiB
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). - Mixed language builds via
language = ["c", "asm"]and similar combinations. - Three build kinds:
bin(default)staticlibsharedlib
- Optional custom output directory via
build.target. - Optional
build.platformto pass architecture hints (-march//arch). - Optional
build.exclude/build.includefor source/header selection. - Optional
build.roots/build.src_disableto replace the defaultsrc/root. - Optional build steps with
build.stepsandbuild.post_steps. - Optional
build.pkg_configintegration. - Optional
build.cleanandbuild.expect. - Optional
[run].cmdto override run command. - 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 tracks source file timestamps and header dependencies (rebuilds when either source or included headers change).
- Object files are always created under
target/<profile>/obj/.