mirror of
https://github.com/dexoron/dcr.git
synced 2026-10-21 11:38:30 +00:00
89 lines
2.8 KiB
Plaintext
89 lines
2.8 KiB
Plaintext
---
|
||
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/\<hash>/`.
|
||
|
||
## 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 для передачи компилятору
|