Clause
← All dokumentation

Översatt från det engelska originalet · 06042fa · 2026-10-09 · Läs på engelska

TOML-projekt

Ett projektmanifest väljer ordnade grupper av Erlang-källfiler och konfigurerar varje mål oberoende. Alla CLI-åtgärder godtar projekt. Se det fungerande exemplet.

Manifest (schema 1)

schema_version = 1

[[targets]]
name = "app"
sources = ["main.erl", "src/workers/*.erl", "shared/**/*.erl"]
source_dirs = ["src/support"]
output = "build/app"
entry = "main:main"

[targets.options]
source_search_paths = ["src", "generated"]
include_dirs = ["include", "vendor/include"]
defines = ["DEBUG", "LIMIT=100", 'LABEL="demo"']
enable_features = ["maybe_expr"]
disable_features = ["compr_assign"]

[targets.options.applications]
my_dependency = "vendor/my_dependency"

CLI och val av mål

clau [options] <source.erl>...
clau [options] --project <path> [--target <name>]...
clau --new-project <filename>

Varje valt mål är en separat kompileringsbatch med egna preprocessorsessioner. Planeringen (avkoda, välja, söka, kontrollera utdatakollisioner) avslutas innan någon källfil körs; körningen bearbetar sedan mål/filer i ordning och låser fast fel. Nyttolastutdata går till stdout i mål-/filordning utan rubriker; kontext och diagnostik går till stderr.

./build/debug/bin/clau --parse-check --project examples/project/project.toml
./build/debug/bin/clau --print-ast --project examples/project/project.toml --target tests --target app

Körbara filer

clau --project FILE [--target T]... (ingen --emit, ingen kontroll-/utskriftsåtgärd) länkar varje valt mål som har en output- eller entry-nyckel, eller som CLI-flaggorna -o/--entry avser, till en körbar fil per mål:

./build/debug/bin/clau --project tests/fixtures/linking/project/project.toml

Skapa ett projekt

--new-project <filename> skriver ett annoterat manifest och ingenting annat.

Sökvägar och sökning

Effektiva alternativ

InställningKombination av manifest och CLI
include_dirsManifestets ordning, efter CLI-flaggan -I (sista CLI--I söks först)
source_search_pathsEndast uppslag av projektets källfiler
definesManifestet först, sedan CLI; dubbletter mellan dem är fel
applicationsManifestets map; CLI-poster ersätter matchande namn
FunktionslistorManifestets inställningar, sedan ordnade CLI-ändringar; CLI vinner
outputPer mål, endast körbara mål; CLI-flaggan -o åsidosätter för ett enda valt mål
entryPer mål; CLI-flaggan --entry åsidosätter för ett enda valt mål

Byggberoende

Kompilatorprivat toml++ 3.4.0 (MIT), endast headerfiler, med undantag, ej släppt syntax avstängd. Arkivets SHA-256 8517f65938a4faae9ccf8ebb36631a38c1cadfb5efa85d9a72e15b9e97d25155.

Gränser

Manifestets storlek 1 MiB; högst 1 024 mål och 100 000 TOML-noder. Varje källexpansion tillåter 100 000 besökta poster, 128 katalognivåer och 16 000 000 jokerteckenövergångar. Uttömning är ett explicit fel; detta är arbetsgränser, inte tidsfrister för I/O.