Files
dcr/docs-crowdin-export/ru-RU/docs/reference/dcr-toml.mdx.mdx
2026-07-06 15:01:47 +08:00

154 lines
9.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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).