https://github.com/dexoron/dcr
DCR is a utility for managing C/C++ projects in a Cargo-like style.
https://github.com/dexoron/dcr
c cpp cpp-all linux macos project-manager rust utils windows
Last synced: 8 days ago
JSON representation
DCR is a utility for managing C/C++ projects in a Cargo-like style.
- Host: GitHub
- URL: https://github.com/dexoron/dcr
- Owner: dexoron
- License: mit
- Created: 2026-02-11T10:50:41.000Z (17 days ago)
- Default Branch: master
- Last Pushed: 2026-02-19T06:50:21.000Z (9 days ago)
- Last Synced: 2026-02-19T11:31:02.033Z (9 days ago)
- Topics: c, cpp, cpp-all, linux, macos, project-manager, rust, utils, windows
- Language: Rust
- Homepage: https://dcr.dexoron.su
- Size: 106 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# DCR (Dexoron Cargo Realization)
DCR is a utility for managing C/C++ projects in a Cargo-like style.
The current implementation is written in Rust.
## Why DCR
- Unified project structure without manual setup
- Simple commands for common tasks
- Transparent compilation and predictable build profiles
## Features
- Create a new project or initialize the current directory
- Build a project with `debug` and `release` profiles
- Run the compiled binary
- Clean build artifacts
- Generate a minimal C project template
- Update the binary via `dcr --update` (GitHub Releases, not for pacman/AUR installs)
## Supported Platforms
- Linux: `x86_64-unknown-linux-gnu`
- macOS Intel: `x86_64-apple-darwin`
- macOS Apple Silicon: `aarch64-apple-darwin`
- Windows: `x86_64-pc-windows-msvc`
## Installation
### Package Manager
**Arch Linux**
```sh
yay -S dcr # or paru and other AUR package managers
```
### From Source
```sh
git clone https://github.com/dexoron/dcr.git
cd dcr
cargo build --release
mkdir -p ~/.local/bin
ln -sf "$PWD/target/release/dcr" ~/.local/bin/dcr
```
### Via `install.sh` (Linux/macOS)
```sh
curl -fsSL https://dcr.dexoron.su/install.sh | bash
```
### Via `install.ps1` (Windows)
```powershell
irm https://dcr.dexoron.su/install.ps1 | iex
```
When executed, both scripts ask whether to:
- download a prebuilt binary from GitHub Releases
- or build the project from `git`
Release assets:
- `dcr-x86_64-unknown-linux-gnu`
- `dcr-x86_64-apple-darwin`
- `dcr-aarch64-apple-darwin`
- `dcr-x86_64-pc-windows-msvc.exe`
## Update
- If DCR was installed from GitHub release assets, `install.sh`, `install.ps1`, or built manually:
- use `dcr --update`
- If DCR is installed via `pacman/AUR`:
- update with your package manager: `paru/yay -Syu dcr` or `sudo pacman -Syu dcr`
- `dcr --update` detects package-managed installs and asks you to update via package manager
## Quick Start
Create a new project:
`dcr new hello`
Or initialize the current directory (the directory must be empty):
`dcr init`
Project structure:
```txt
hello/
- src/
- - main.c
- dcr.toml
```
Build and run the project:
`dcr run` or `dcr run --release`
## Commands
### `dcr new `
Creates a project with the specified name in the current directory.
### `dcr init`
Creates a project in the current directory. The project name is taken from the directory name. The directory must be empty.
### `dcr build [profile]`
Builds the project. If no profile is specified, `--debug` is used.
### `dcr run [profile]`
Builds the project and runs the binary. If no profile is specified, `--debug` is used.
Run manually:
`./target//main`
### `dcr clean`
Removes the `target` directory in the project root.
## Build Profiles
Two profiles are supported:
- `--debug` (default) - flags: `-O0 -g -Wall -Wextra -fno-omit-frame-pointer -DDEBUG`
- `--release` - flags: `-O3 -DNDEBUG -march=native`
## Configuration
The main project file is `dcr.toml`.
Example `dcr.toml`:
```toml
[package]
name = "hello"
version = "0.1.0"
language = "c"
compiler = "clang"
[dependencies]
```
## Requirements
- Rust toolchain (`rustc`, `cargo`) - for building DCR from source
- C compiler (`clang`, `gcc`, or others)
## Releases
Releases are built automatically via GitHub Actions (`.github/workflows/release.yml`) when a tag matching `v*` is pushed.
## License
See `LICENSE`.