Clause
← Gesamte Dokumentation

Übersetzt aus dem englischen Original · 06042fa · 2026-10-09 · Auf Englisch lesen

TOML-Projekte

Ein Projektmanifest wählt geordnete Gruppen von Erlang-Quellen aus und konfiguriert jedes Ziel unabhängig. Alle CLI-Aktionen akzeptieren Projekte. Siehe das funktionierende Beispiel.

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 und Zielauswahl

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

Jedes ausgewählte Ziel ist ein separater Kompilier-Batch mit eigenen Präprozessor-Sitzungen. Die Planung (Dekodieren, Auswählen, Suchen, Prüfen auf Ausgabekollisionen) ist abgeschlossen, bevor irgendeine Quelle läuft; die Ausführung verarbeitet dann Ziele/Dateien der Reihe nach und hält Fehlschläge fest. Nutzausgaben gehen ohne Banner in Ziel-/Dateireihenfolge nach stdout; Kontext und Diagnosen gehen nach 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

Ausführbare Dateien

clau --project FILE [--target T]... (kein --emit, keine Prüf-/Ausgabeaktion) linkt jedes ausgewählte Ziel, das einen Schlüssel output oder entry hat oder das CLI--o/--entry adressiert, zu einer ausführbaren Datei pro Ziel:

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

Ein Projekt erstellen

--new-project <filename> schreibt ein kommentiertes Manifest und sonst nichts.

Pfade und Suche

Wirksame Optionen

EinstellungKombination aus Manifest und CLI
include_dirsManifestreihenfolge, nach CLI--I (letztes CLI--I wird zuerst durchsucht)
source_search_pathsNur Suche nach Projektquellen
definesZuerst Manifest, dann CLI; Duplikate über beide hinweg sind Fehler
applicationsManifest-Map; CLI-Einträge ersetzen gleichnamige
Feature-ListenManifesteinstellungen, dann geordnete CLI-Änderungen; CLI gewinnt
outputPro Ziel, nur ausführbare Ziele; CLI--o überschreibt für ein einzelnes ausgewähltes Ziel
entryPro Ziel; CLI---entry überschreibt für ein einzelnes ausgewähltes Ziel

Build-Abhängigkeit

Compiler-internes toml++ 3.4.0 (MIT), nur Header, mit Ausnahmen, nicht veröffentlichte Syntax deaktiviert. SHA-256 des Archivs 8517f65938a4faae9ccf8ebb36631a38c1cadfb5efa85d9a72e15b9e97d25155.

Grenzen

Manifestgröße 1 MiB; höchstens 1.024 Ziele und 100.000 TOML-Knoten. Jede Quellenexpansion erlaubt 100.000 besuchte Einträge, 128 Verzeichnisebenen und 16.000.000 Wildcard-Übergänge. Erschöpfung ist ein expliziter Fehler; dies sind Arbeitsgrenzen, keine I/O-Fristen.