Перейти к основному содержимому

Зависимости

Форматы

В секции [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. Проверяет контрольные суммы при сборке.

Процесс резолва

  1. Загружаются все зависимости (registry → git → path)
  2. Рекурсивно резолвятся транзитивные зависимости
  3. Проверяется lock-файл (если есть)
  4. Собираются include_dirs, lib_dirs, libs для передачи компилятору