#DCR - A Cargo-style build tool for C/C++ projects

12 messages Β· Page 1 of 1 (latest)

stray elm
#

πŸ› οΈ DCR β€” Dexoron Cargo Realization

A Cargo-style build tool for C/C++ projects

πŸ“‚ GitHub: https://github.com/dexoron/dcr
🌐 Website & Docs: https://dcr.dexoron.su

πŸ”₯ Why DCR?

  • No boilerplate β€” one config file, predictable structure.
  • Cargo-like workflow β€” familiar build, run, clean, test, add.
  • Cross-compilation β€” full target triple support with short names.
  • IDE integration β€” VS Code, CLion, and compile_commands.json out of the box.
  • Dependencies β€” path, git, and registry-based with a lock file.

πŸ“¦ Installation

via Dexoron Custom Repository (Linux):

See https://dcr.dexoron.su for package manager configuration.

  • Arch Linux: sudo pacman -Sy dcr
  • Debian / Ubuntu: sudo apt update && sudo apt install dcr
  • Fedora / RHEL: sudo dnf install dcr

Arch Linux (AUR):

yay -S dcr

macOS / Linux (Homebrew):

brew tap dexoron/dexoron && brew install dcr

Cargo (crates.io):

cargo install dcr

One-line Install Script (Linux / macOS):

curl -fsSL [https://dcr.dexoron.su/install.sh](https://dcr.dexoron.su/install.sh) | bash

πŸš€ Quick Start

dcr new hello
cd hello
dcr run

Project structure:

hello/
β”œβ”€β”€ dcr.toml       # Project config
└── src/
    └── main.c

dcr.toml Example:

[package]
name = "hello"
version = "0.1.0"
type = "none"
description = ""
author = ""
license = "GPL-3.0-or-later"

[build]
language = "c"
standard = "c11"
compiler = "clang"
kind = "bin"

[dependencies]

πŸ’» Base Commands

  • dcr new <name> β€” Create a new project
  • dcr init β€” Initialize current directory
  • dcr add <dep> β€” Add a dependency
  • dcr build [--release] β€” Build the project
  • dcr run [--release] β€” Build and run
  • dcr clean β€” Remove build artifacts
  • dcr test β€” Run project tests
  • dcr fmt β€” Format C/C++ sources (clang-format)
  • dcr tree β€” View dependency tree
  • dcr gen <vscode|clion|compile-commands> β€” Generate IDE integration

πŸ’» Supported Platforms

+---------+--------+---------+-----+------+------+------+
|   OS    | x86_64 | aarch64 | GNU | Musl | MSVC |MinGW |
+---------+--------+---------+-----+------+------+------+
| Linux   |   YES  |   YES   | YES |  YES |  NO  |  NO  |
| macOS   |   YES  |   YES   |  NO |  NO  |  NO  |  NO  |
| Windows |   YES  |   YES   |  NO |  NO  |  YES |  YES |
| BSD     |   YES  |    NO   | YES |  NO  |  NO  |  NO  |
+---------+--------+---------+-----+------+------+------+
* BSD includes FreeBSD, OpenBSD, NetBSD (x86_64 / GNU)

πŸ‘₯ Contributors

  • Dexoron (Bezotechestvo Vladimir) β€” Creator, Maintainer (@dexoron)
  • Kai β€” Maintainer (@peoplemiau1)

βš–οΈ License: GPL-3.0

bitter kestrel
#

Good heavens! It's written in rust ferrisCat

acoustic forum
#

Hey uh

#

Your use of GPLv3 here probably doesn't work

#

libgit is licensed under GPLv2-only, which makes it incompatible with GPLv3-or-later

#

As well as openssl (and various rust crates) are licensed under Apache 2.0, which is incompatible with the GPLv2-only used by libgit2

stray elm
#

oh..
sad(

acoustic forum
#

libgit2 has a Linking Exception clause in its license text

#

So it might be fine but it looks a bit dubious either way. I'd at least run a tool like cargo deny to check for possible license incompaibility issues

stray elm
#

cargo install deny and cargo deny?

acoustic forum
#

you'll need to install it. look out up and read the documentation for how to use it