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