diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e397056 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Dexoron (Bezotechestvo Vladimir) [main@dexoron.su] + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md index e69de29..7153f4d 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,81 @@ +# 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 ` +Создает проект в текущей директории с указанным именем. + +### `dcr init` +Создает проект в текущей директории. Имя проекта будет равно имени директории. Директория должна быть пустой. + +### `dcr build [profile]` +Собирает проект. Если профиль не указан, используется `--debug`. + +### `dcr run [profile]` +Собирает проект и запускает бинарник. Если профиль не указан, используется `--debug`. + +Запуск вручную: +`./target//main` + +## Профили сборки +Поддерживаются два профиля: +- `--debug` (по умолчанию) — флаги: `-O0 -g -Wall -Wextra -fno-omit-frame-pointer -DDEBUG` +- `--release` — флаги: `-O3 -DNDEBUG -march=native` + +## Конфигурация +Основной файл проекта — `dcr.toml`. Сейчас он создается автоматически и служит точкой входа для будущих настроек. + +## Пример проекта +`src/main.c` содержит минимальный `Hello, World!`: +```c +#include + +int main(void) { + puts("Hello, World!"); + return 0; +} +``` + +## Требования +- C-компилятор (например, `gcc` или `clang`) +- Python 3.14.2 (для текущей версии DCR) +- uv (менеджер проекта для Python) + +## Статус и планы +Проект в стадии MVP. Планируется переписывание на более подходящий язык и расширение функциональности: +- более гибкая конфигурация через `dcr.toml` +- расширяемые профили сборки +- менеджер пакетов + +## Лицензия +См. файл `LICENSE`.