Рабочие пространства
Workspaces позволяют управлять несколькими пакетами в одном репозитории.
Конфигурация
[workspace]
members = [
{ path = "pkg-a" },
{ path = "pkg-b", deps = ["pkg-a"] },
{ path = "pkg-c", deps = ["pkg-a", "pkg-b"], main = true },
]
Поля member
| Поле | Описание |
|---|---|
path | Путь к пакету (относительно корня workspace) |
deps | Зависимости от других member-ов |
main | Пометить как главный пакет |
Топологическая сортировка
DCR автоматически сортирует пакеты по зависимостям: пакет A собирается раньше B, если B зависит от A.
Циклические зависимости обнаруживаются и приводят к ошибке.
Сборка
dcr build # собрать все пакеты
dcr build --workspace pkg-a # собрать только pkg-a
При сборке workspace выходные файлы member-ов (библиотеки) автоматически добавляются в include/lib пути зависимых пакетов.
Очистка
dcr clean # очистить только корневой target/
dcr clean --all # очистить target/ всех пакетов
Наследование
Если у member-а нет своей секции [build], а в корневом [build] указано inherit = true:
[build]
inherit = true
language = "c"
standard = "c17"
То member использует настройки сборки из корневого dcr.toml.