mirror of
https://github.com/dexoron/dcr.git
synced 2026-10-21 16:09:41 +00:00
178 lines
9.0 KiB
Plaintext
178 lines
9.0 KiB
Plaintext
---
|
||
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
|
||
# настройки запуска
|
||
```
|
||
|
||
## [пакет]
|
||
|
||
| Поле | Обязательное | Описание |
|
||
| ---------- | ------------ | ------------------------------------------- |
|
||
| `имя` | да | Имя проекта |
|
||
| `версия` | да | Семантическая версия |
|
||
| `тип` | no | `app`, `lib`, `none` (defaults to `"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"`, `"c++"`, `"cpp"`, `"cxx"`, `"asm"` (optional, defaults to `"c"`) |
|
||
| `стандартный` | `"c11"` | Стандарт C (`c11`, `c17`, `c23`) |
|
||
| `cxx_standard` | — | Стандарт C++ (`c++17`, `c++20`, `c++23`) |
|
||
| `компилятор` | `cxxflags` | Preferred compiler (optional, defaults to `"clang"`) |
|
||
| `тип` | `"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-only, not built standalone (no `language`/`compiler` required) |
|
||
| `отдельно стоящий` | `false` | Компилировать в автономном режиме (`-ffreestanding` + `-nostdlib -static`) |
|
||
| `opt_level` | — | Optimization level: `0`-`3`, `"s"`, `"z"` (derived from profile if omitted) |
|
||
| `ldscript` | profile-based | Emit debug symbols (`-g`): `true` in debug, `false` in release |
|
||
| `lto` | `false` | Оптимизация на этапе компоновки (`-flto` как для компилятора, так и для компоновщика) |
|
||
| `asflags` | `false` | Удалить символы из вывода (опция `-s` в ldflags) |
|
||
| `true` | `[]` | Warning flags (e.g. `"all"`, `"extra"`, `"pedantic"`); engine adds `-Wall -Wextra` in debug if empty |
|
||
| `panic` | `""` | Стратегия «Паника»: `"abort"` отключает исключения и таблицы развертки |
|
||
| `codegen-units` | `""` | Максимальное количество параллельных заданий компиляции (`"0"` = автоматически) |
|
||
| `qt` | `false` | Включить автоматическую обработку метаобъектов Qt (MOC, UIC, RCC) |
|
||
|
||
Параметры из исходного файла конфигурации (не в виде типизированной структуры):
|
||
|
||
* Пакеты для pkg-config
|
||
* Путь к linker script
|
||
* `build.steps` / `build.post_steps` — этапы генерации кода
|
||
|
||
## Per-language overrides: `[build.c]`, `[build.cxx]`, `[build.asm]`
|
||
|
||
Each language can have its own table that overrides the flat `[build]` settings:
|
||
|
||
```toml
|
||
[build]
|
||
compiler = "clang"
|
||
standard = "c11"
|
||
|
||
[build.c]
|
||
standard = "c23"
|
||
compiler = "gcc"
|
||
|
||
[build.cxx]
|
||
standard = "c++23"
|
||
compiler = "g++"
|
||
|
||
[build.asm]
|
||
compiler = "nasm"
|
||
flags = ["-felf64"]
|
||
```
|
||
|
||
The flat `[build]` acts as fallback; per-language tables take precedence for their language.
|
||
|
||
Пример:
|
||
|
||
```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).
|