Clause
← Toda la documentación

Traducido del original en inglés · 06042fa · 2026-10-09 · Leer en inglés

Proyectos TOML

Un manifiesto de proyecto selecciona grupos ordenados de fuentes Erlang y configura cada destino (target) de forma independiente. Todas las acciones de la CLI aceptan proyectos. Véase el ejemplo funcional.

Manifiesto (esquema 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 y selección de destinos

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

Cada destino seleccionado es un lote de compilación independiente con sus propias sesiones de preprocesado. La planificación (decodificar, seleccionar, buscar, comprobar colisiones de salida) termina antes de procesar ningún fuente; después la ejecución procesa los destinos/archivos en orden y retiene los fallos. La salida de contenido va a stdout en orden de destino/archivo sin encabezados; el contexto y los diagnósticos van a 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

Ejecutables

clau --project FILE [--target T]... (sin --emit ni acción de comprobación/impresión) enlaza cada destino seleccionado que tenga una clave output o entry, o al que se dirijan -o/--entry de la CLI, en un ejecutable por destino:

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

Crear un proyecto

--new-project <filename> escribe un manifiesto comentado y nada más.

Rutas y búsqueda

Opciones efectivas

AjusteCombinación de manifiesto y CLI
include_dirsOrden del manifiesto, después de -I de la CLI (el último -I de la CLI se busca primero)
source_search_pathsSolo búsqueda de fuentes del proyecto
definesPrimero el manifiesto, después la CLI; los duplicados entre ambos son errores
applicationsMap del manifiesto; las entradas de la CLI reemplazan los nombres coincidentes
Listas de funcionalidadesAjustes del manifiesto, después los cambios ordenados de la CLI; prevalece la CLI
outputPor destino, solo destinos ejecutables; -o de la CLI lo sustituye para un único destino seleccionado
entryPor destino; --entry de la CLI lo sustituye para un único destino seleccionado

Dependencia de compilación

toml++ 3.4.0 (MIT), privado del compilador, solo cabeceras, con excepciones y con la sintaxis no publicada desactivada. SHA-256 del archivo 8517f65938a4faae9ccf8ebb36631a38c1cadfb5efa85d9a72e15b9e97d25155.

Límites

Tamaño del manifiesto 1 MiB; como máximo 1.024 destinos y 100.000 nodos TOML. Cada expansión de fuentes permite 100.000 entradas visitadas, 128 niveles de directorio y 16.000.000 de transiciones de comodines. El agotamiento es un error explícito; son límites de trabajo, no plazos de E/S.