--- sidebar_label: Обзор dcr.toml --- # Обзор dcr.toml Основной конфигурационный файл проекта. Располагается в корне проекта. ## Структура ```toml [package] # обязательные поля [build] # настройки сборки [build.debug] # опционально: переопределение для debug [build.release] # опционально: переопределение для release [build.linux] # опционально: переопределение для Linux [build.windows] # опционально: переопределение для Windows [build.windows.debug] # комбинация target + profile [toolchain] # пути к компиляторам/линкеру [dependencies] # зависимости проекта [workspace] # мультипакетная конфигурация [run] [run.release] # опционально: переопределение для release # настройки запуска ``` ## [пакет] | Поле | Обязательное | Описание | | ---------- | ------------ | --------------------------- | | `имя` | да | Имя проекта | | `версия` | да | Семантическая версия | | `тип` | да | `app`, `lib`, `none` | | `лицензия` | нет | SPDX-идентификатор лицензии | | `автор` | нет | Автор | ```toml [package] name = "my-app" version = "0.1.0" type = "app" license = "MIT" author = "John Doe" ``` ## [сборка] ... * `build.qt` — (bool) Включить автоматическую обработку метаобъектов Qt (MOC, UIC, RCC). Требуется установка модулей `qt6` с помощью `pkg-config`. | Поле | По умолчанию | Описание | | ------------------------ | --------------------------------------------------------------- | ------------------------------------------------------------------------------------- | | `язык` | `"c"` | `"c"`, `"cxx"`, `"cpp"` | | `стандартный` | `"c11"` | Стандарт C (`c11`, `c17`, `c23`) | | `cxx_standard` | `"c++20"` | Стандарт C++ (`c++17`, `c++20`, `c++23`) | | `компилятор` | `cxxflags` | Предпочитаемый компилятор | | `тип` | `"bin"` | `bin`, `staticlib`, `sharedlib`, `efi`, `elf`, `none`, `custom` | | `target` | хост | Target triple для кросс-компиляции | | `платформа` | `"нативный"` | `native`, `efi`, `freestanding` | | `cflags` | `[]` | Дополнительные флаги C++ | | `ldflags` | `[]` | Дополнительные флаги линковки | | `имя файла` | `""` | Кастомное имя выходного файла | | `расширение` | `""` | Пользовательское расширение файла | | `корни` | `["src"]` | Корневые директории с исходниками | | `exclude` | `[]` | Паттерны исключений | | `include` | `[]` | Дополнительные include-директории | | `src_disable` | `false` | Отключить автоматический поиск источников | | `наследовать` | `false` | Наследовать build от корня workspace | | `clean` | `[]` | Шаблоны Glob для настраиваемых чистых путей | | `out_dir` | `""` | Пользовательский каталог для вывода данных | | `только рабочая область` | `false` | Только для workspace, не собирать отдельно | | `отдельно стоящий` | `false` | Компилировать в автономном режиме (`-ffreestanding` + `-nostdlib -static`) | | `opt_level` | `"0"` (отладочная версия) / `"3"` (релизная версия) | Уровень оптимизации: `0`–`3`, `"s"`, `"z"` | | `ldscript` | `true` (отладочный режим) / `false` (релизный режим) | Выводить отладочные символы (`-g`) | | `lto` | `false` | Оптимизация на этапе компоновки (`-flto` как для компилятора, так и для компоновщика) | | `asflags` | `false` | Удалить символы из вывода (опция `-s` в ldflags) | | `true` | `["all", "extra"]` (отладочная версия) / `[]` (релизная версия) | Флаги предупреждений (например, `"all"`, `"extra"`, `"pedantic"`) | | `panic` | `""` | Стратегия «Паника»: `"abort"` отключает исключения и таблицы развертки | | `codegen-units` | `""` | Максимальное количество параллельных заданий компиляции (`"0"` = автоматически) | | `qt` | `false` | Включить автоматическую обработку метаобъектов Qt (MOC, UIC, RCC) | Параметры из исходного файла конфигурации (не в виде типизированной структуры): * Пакеты для pkg-config * Путь к linker script * `build.steps` / `build.post_steps` — этапы генерации кода Пример: ```toml [build] language = ["cpp", "c"] standard = "c17" standard = "c23" cxx_standard = "c++23" compiler = "clang" kind = "sharedlib" cflags = ["-Wall", "-Wextra"] pkg_config = ["sdl2", "gl"] ``` ## [набор инструментов] ```toml [toolchain] cc = "/usr/bin/clang" cxx = "/usr/bin/clang++" as = "/usr/bin/as" ar = "/usr/bin/ar" ld = "/usr/bin/ld.lld" uic = "/usr/bin/uic" # Qt moc = "/usr/bin/moc" # Qt rcc = "/usr/bin/rcc" # Qt ``` Raw config также поддерживает `uic`, `moc` и `rcc` для генерации кода Qt. ## [зависимости] См. [dependencies](/docs/reference/dependencies). ## [запустить] ```toml [запустить] cmd = "./target/{profile}/{name}" ``` Подстановки: * `{version}` — версия из [package] * `pkg_config` * `{profile}` — отладочная / релизная версия * `{name}` — имя из [package] По умолчанию `cmd` вычисляется как `./target/{profile}/{name}`. ## [рабочая область] См. [workspaces](/docs/reference/workspaces).