--- sidebar_label: Зависимости --- # Зависимости ## Форматы В секции `[dependencies]` поддерживаются три формата: ### Строка (реестр) ```toml [dependencies] fmt = "10.1.1" spdlog = "^1.12" catch2 = ">=3.0,<4.0" ``` Строка версии используется без изменений для поиска в реестре. ### Табличный (git) ```toml [dependencies] fmt = { git = "https://github.com/fmtlib/fmt", tag = "10.1.1" } ``` Поля: `git`, `branch`, `tag`, `rev`, `features`. ### Табличный (path) ```toml [dependencies] mylib = { path = "../mylib" } ``` ## Реестр ## RegistryDCR использует реестр пакетов для поиска зависимостей по имени.```toml # ~/.dcr/config.toml [registry] main = { url = "https://github.com/dcr-ports/dcr-index", priority = 1 } ``` ```toml # ~/.dcr/config.toml [[registry]] name = "default" url = "https://index.dcr.pm" ``` Приоритет реестра: порядок в файле `config.toml`. Переменная `DCR_INDEX_PATH` переопределяет путь к index.json. ## Git-зависимости При добавлении git-зависимости DCR клонирует репозиторий через `git2`: * `branch` — переключиться на ветку * `tag` — переключиться на тег * `rev` — переключиться на конкретный коммит * `features` — флаги функций (проанализированы, но не влияют на сборку) Путь к кэшу: `~/.dcr/git/\/`. ## Path-зависимости Локальные пути. DCR автоматически находит include и lib директории. ```toml [dependencies] mylib = { path = "/abs/path/to/lib" } mylib = { path = "../relative/path" } ``` ## dcr.lock Файл блокировки зависимостей. Содержит точные версии, хеши и источники. Создаётся при выполнении команды `dcr build` при наличии зависимостей реестра. Автоматически обновляется при `dcr add`. ## Процесс резолва 1. Загружаются все зависимости (registry → git → path) 2. Для зависимостей типа «path»: рекурсивно прочитать их файлы `dcr.toml` 3. Для зависимостей реестра: выполните поиск в файле `index.json` 4. Для зависимостей Git: клонировать в кэш 5. Собираются include_dirs, lib_dirs, libs для передачи компилятору