--- 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.default] url = "https://index.dcr.pm" priority = 1 ``` Приоритет реестра: порядок в файле `config.toml`. Переменная `DCR_INDEX_PATH` переопределяет путь к index.json. ## Git-зависимости Git dependencies are parsed and recorded in `dcr.lock`. DCR supports specifying branch/tag/rev for git sources: * `branch` — переключиться на ветку * `tag` — переключиться на тег * `rev` — переключиться на конкретный коммит * `features` — флаги функций (проанализированы, но не влияют на сборку) ## Path dependencies Local paths. DCR automatically discovers include and lib directories from the neighbor's `dcr.toml`. ```toml [dependencies] mylib = { path = "/abs/path/to/lib" } mylib = { path = "../relative/path" } ``` ## dcr.lock Dependency lock file. Contains package names and sources. Created during `dcr build` when registry dependencies are present. Not updated during `dcr add` — only on the next `dcr build`. ## Resolution process 1. Load all dependencies (registry → git → path) 2. For path deps: recursively read their `dcr.toml` 3. For registry deps: search `index.json` 4. For git deps: clone to cache 5. Collect `include_dirs`, `lib_dirs`, `libs` for the compiler