Обзор dcr.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
# настройки запуска
[package]
| Поле | Обязательное | Описание |
|---|---|---|
name | да | Имя проекта |
version | да | Семантическая версия |
type | да | app, lib, none |
license | нет | SPDX-идентификатор лицензии |
author | нет | Автор |
[package]
name = "my-app"
version = "0.1.0"
type = "app"
license = "MIT"
author = "John Doe"
[build]
| Поле | По умолчанию | Описание |
|---|---|---|
language | "c" | "c", "cxx", "cpp" |
standard | "c11" | Стандарт C (c11, c17, c23) |
cxx_standard | "c++20" | Стандарт C++ (c++17, c++20, c++23) |
compiler | авто | Предпочитаемый компилятор |
kind | "bin" | bin, staticlib, sharedlib, efi, elf, none, custom |
target | хост | Target triple для кросс-компиляции |
platform | "native" | native, efi, freestanding |
cflags | [] | Дополнительные флаги C |
cxxflags | [] | Дополнительные флаги C++ |
asflags | [] | Дополнительные флаги ассемблера |
ldflags | [] | Дополнительные флаги линковки |
ldscript | "" | Путь к linker script |
filename | "" | Кастомное имя выходного файла |
extension | "" | Кастомное расширение |
roots | ["src"] | Корневые директории с исходниками |
exclude | [] | Паттерны исключений |
include | [] | Дополнительные include-директории |
src_disable | false | Отключить src/ директорию (требуется задать roots) |
inherit | false | Наследовать build от корня workspace |
clean | true | Удалять target/ при clean |
out_dir | "" | Кастомная выходная директория |
pkg_config | [] | Пакеты для pkg-config |
workspace_only | false | Только для workspace, не собирать отдельно |
[build]
language = ["cpp", "c"]
standard = "c17"
standard = "c23"
cxx_standard = "c++23"
compiler = "clang"
kind = "sharedlib"
cflags = ["-Wall", "-Wextra"]
pkg_config = ["sdl2", "gl"]
[toolchain]
[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
[dependencies]
См. dependencies.
[run]
[run]
cmd = "./target/{profile}/{name}"
Подстановки:
{version}— версия из [package]{profile}— debug / release{name}— имя из [package]
По умолчанию cmd вычисляется как ./target/{profile}/{name}.
[workspace]
См. workspaces.