4.6 KiB
DCR (Dexoron Cargo Realization)
DCR — это утилита для управления проектами на C/C++ в стиле Cargo.
Текущая реализация написана на Rust.
Зачем DCR
- Единая структура проекта без ручной настройки
- Простые команды для типовых задач
- Прозрачная компиляция и предсказуемые профили сборки
Возможности
- Создание нового проекта или инициализация текущей директории
- Сборка проекта в профилях
debugиrelease - Запуск собранного бинарника
- Очистка результатов сборки
- Генерация минимального шаблона C-проекта
- Обновление бинарника через
dcr --update(GitHub Releases, не для pacman-установок)
Поддерживаемые платформы
- Linux:
x86_64-unknown-linux-gnu - macOS Intel:
x86_64-apple-darwin - macOS Apple Silicon:
aarch64-apple-darwin - Windows:
x86_64-pc-windows-msvc
Установка
Пакетный менеджер
ArchLinux
yay -S dcr # или paru и остальные менеджеры пакетов AUR
Из исходников
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
Через install.sh (Linux/macOS)
curl -fsSL https://dcr.dexoron.su/install.sh | bash
Через install.ps1 (Windows)
irm https://dcr.dexoron.su/install.ps1 | iex
Оба скрипта при запуске спрашивают:
- скачать готовый бинарник из GitHub Release
- или собрать проект из
git
Релизные ассеты:
dcr-x86_64-unknown-linux-gnudcr-x86_64-apple-darwindcr-aarch64-apple-darwindcr-x86_64-pc-windows-msvc.exe
Обновление
- Если DCR установлен из GitHub Releases, через
install.sh,install.ps1или собран вручную:- используйте
dcr --update
- используйте
- Если DCR установлен через
pacman/AUR:- обновляйте через пакетный менеджер:
paru/yay -Syu dcrилиsudo pacman -Syu dcr dcr --updateопределяет пакетную установку и подсказывает обновляться через пакетный менеджер
- обновляйте через пакетный менеджер:
Быстрый старт
Создать новый проект:
dcr new hello
Или инициализировать текущую директорию (директория должна быть пустой):
dcr init
Структура проекта:
hello/
- src/
- - main.c
- dcr.toml
Сборка и запуск проекта:
dcr run или dcr run --release
Команды
dcr new <name>
Создает проект в текущей директории с указанным именем.
dcr init
Создает проект в текущей директории. Имя проекта будет равно имени директории. Директория должна быть пустой.
dcr build [profile]
Собирает проект. Если профиль не указан, используется --debug.
dcr run [profile]
Собирает проект и запускает бинарник. Если профиль не указан, используется --debug.
Запуск вручную:
./target/<profile>/main
dcr clean
Удаляет папку target в корне проекта.
Профили сборки
Поддерживаются два профиля:
--debug(по умолчанию) — флаги:-O0 -g -Wall -Wextra -fno-omit-frame-pointer -DDEBUG--release— флаги:-O3 -DNDEBUG -march=native
Конфигурация
Основной файл проекта — dcr.toml.
Пример dcr.toml:
[package]
name = "hello"
version = "0.1.0"
language = "c"
compiler = "clang"
[dependencies]
Требования
- Rust toolchain (
rustc,cargo) - Для ручной сборки DCR - C-компилятор (
clang,gccили другие)
Релизы
Релизы собираются автоматически через GitHub Actions (.github/workflows/release.yml) при пуше тега формата v*.
Лицензия
См. файл LICENSE.