DCR (Dexoron Cargo Realization)
DCR — это утилита для управления проектами на C. Она задает единый формат проекта, дает команды для создания, сборки и запуска, и использует один конфигурационный файл dcr.toml.
Проект находится на стадии MVP. Текущая реализация написана на Python и в будущем будет переписана.
Зачем DCR
- Единая структура проекта без ручной настройки
- Простые команды для типовых задач
- Прозрачная компиляция и предсказуемые профили сборки
Возможности
- Создание нового проекта или инициализация текущей директории
- Сборка проекта в профилях
debugиrelease - Запуск собранного бинарника
- Генерация минимального шаблона C-проекта
Установка
curl -L dcr.zov.tatar | bash
Быстрый старт
Создать новый проект:
dcr new hello
Или инициализировать текущую директорию (директория должна быть пустой):
dcr init
Структура проекта:
hello/
- src/
- - main.c
- dcr.toml
Команды
dcr new <name>
Создает проект в текущей директории с указанным именем.
dcr init
Создает проект в текущей директории. Имя проекта будет равно имени директории. Директория должна быть пустой.
dcr build [profile]
Собирает проект. Если профиль не указан, используется --debug.
dcr run [profile]
Собирает проект и запускает бинарник. Если профиль не указан, используется --debug.
Запуск вручную:
./target/<profile>/main
Профили сборки
Поддерживаются два профиля:
--debug(по умолчанию) — флаги:-O0 -g -Wall -Wextra -fno-omit-frame-pointer -DDEBUG--release— флаги:-O3 -DNDEBUG -march=native
Конфигурация
Основной файл проекта — dcr.toml. Сейчас он создается автоматически и служит точкой входа для будущих настроек.
Пример проекта
src/main.c содержит минимальный Hello, World!:
#include <stdio.h>
int main(void) {
puts("Hello, World!");
return 0;
}
Требования
- C-компилятор (например,
gccилиclang) - Python 3.14.2 (для текущей версии DCR)
- uv (менеджер проекта для Python)
Статус и планы
Проект в стадии MVP. Планируется переписывание на более подходящий язык и расширение функциональности:
- более гибкая конфигурация через
dcr.toml - расширяемые профили сборки
- менеджер пакетов
Лицензия
См. файл LICENSE.