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

Рабочие пространства

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.