Перейти к основному содержимому

Обзор 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_disablefalseОтключить src/ директорию (требуется задать roots)
inheritfalseНаследовать build от корня workspace
cleantrueУдалять target/ при clean
out_dir""Кастомная выходная директория
pkg_config[]Пакеты для pkg-config
workspace_onlyfalseТолько для 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.