Clause
← Toute la documentation

Traduit de l'original anglais · 06042fa · 2026-10-09 · Lire en anglais

Projets TOML

Un manifeste de projet sélectionne des groupes ordonnés de sources Erlang et configure chaque cible indépendamment. Toutes les actions de la CLI acceptent les projets. Voir l'exemple fonctionnel.

Manifeste (schéma 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 et sélection des cibles

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

Chaque cible sélectionnée est un lot de compilation séparé avec ses propres sessions de prétraitement. La planification (décodage, sélection, découverte, vérification des collisions de sorties) se termine avant le traitement de toute source ; l'exécution traite ensuite les cibles/fichiers dans l'ordre et mémorise les échecs. La sortie utile va sur stdout dans l'ordre cible/fichier sans bannières ; le contexte et les diagnostics vont sur 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

Exécutables

clau --project FILE [--target T]... (sans --emit, sans action de vérification/affichage) lie chaque cible sélectionnée qui a une clé output ou entry, ou que -o/--entry de la CLI désigne, en un exécutable par cible :

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

Créer un projet

--new-project <filename> écrit un manifeste annoté et rien d'autre.

Chemins et découverte

Options effectives

RéglageCombinaison du manifeste et de la CLI
include_dirsOrdre du manifeste, après les -I de la CLI (le dernier -I de la CLI est cherché en premier)
source_search_pathsRecherche des sources du projet uniquement
definesManifeste d'abord, puis CLI ; les doublons entre les deux sont des erreurs
applicationsMap du manifeste ; les entrées de la CLI remplacent les noms correspondants
Listes de fonctionnalitésRéglages du manifeste, puis modifications ordonnées de la CLI ; la CLI l'emporte
outputPar cible, cibles exécutables uniquement ; -o de la CLI le remplace pour une seule cible sélectionnée
entryPar cible ; --entry de la CLI le remplace pour une seule cible sélectionnée

Dépendance de compilation

toml++ 3.4.0 (MIT), privé au compilateur, uniquement en en-têtes avec exceptions, syntaxe non publiée désactivée. SHA-256 de l'archive 8517f65938a4faae9ccf8ebb36631a38c1cadfb5efa85d9a72e15b9e97d25155.

Limites

Taille du manifeste 1 Mio ; au plus 1 024 cibles et 100 000 nœuds TOML. Chaque expansion de sources autorise 100 000 entrées visitées, 128 niveaux de répertoires et 16 000 000 transitions de motifs génériques. L'épuisement est une erreur explicite ; ce sont des bornes de travail, pas des délais d'E/S.