mirror of
https://github.com/dexoron/dcr.git
synced 2026-10-21 14:38:30 +00:00
104 lines
3.9 KiB
Markdown
104 lines
3.9 KiB
Markdown
# DCR (Dexoron Cargo Realization)
|
||
|
||
DCR — это утилита для управления проектами на C. Она задает единый формат проекта, дает команды для создания, сборки и запуска, и использует один конфигурационный файл `dcr.toml`.
|
||
|
||
Проект находится на стадии MVP. Текущая реализация написана на Python и в будущем будет переписана.
|
||
|
||
## Зачем DCR
|
||
- Единая структура проекта без ручной настройки
|
||
- Простые команды для типовых задач
|
||
- Прозрачная компиляция и предсказуемые профили сборки
|
||
|
||
## Возможности
|
||
- Создание нового проекта или инициализация текущей директории
|
||
- Сборка проекта в профилях `debug` и `release`
|
||
- Запуск собранного бинарника
|
||
- Очистка результатов сборки
|
||
- Генерация минимального шаблона C-проекта
|
||
|
||
## Быстрый старт
|
||
Создать новый проект:
|
||
`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`
|
||
|
||
### `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]
|
||
```
|
||
|
||
## Установка в PATH
|
||
Чтобы вызывать `dcr` из любой директории, можно сделать symlink в `~/.local/bin`:
|
||
```sh
|
||
ln -s "$PWD/dcr" ~/.local/bin/dcr
|
||
```
|
||
Убедитесь, что `~/.local/bin` находится в `PATH`.
|
||
|
||
## Пример проекта
|
||
`src/main.c` содержит минимальный `Hello, World!`:
|
||
```c
|
||
#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`.
|