--- sidebar_label: Рабочие пространства --- # Рабочие пространства Workspaces позволяют управлять несколькими пакетами в одном репозитории. ## Конфигурация ```toml [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. Циклические зависимости обнаруживаются и приводят к ошибке. ## Сборка ```bash dcr build # собрать все пакеты dcr build --workspace pkg-a # собрать только pkg-a ``` При сборке workspace выходные файлы member-ов (библиотеки) автоматически добавляются в include/lib пути зависимых пакетов. ## Очистка ```bash dcr clean # очистить только корневой target/ dcr clean --all # очистить target/ всех пакетов ``` ## Наследование Если у member-а нет своей секции `[build]`, а в корневом `[build]` указано `inherit = true`: ```toml [build] inherit = true language = "c" standard = "c17" ```