Clause
← Toda a documentação

Traduzido do original em inglês · 06042fa · 2026-10-09 · Ler em inglês

Projetos TOML

Um manifesto de projeto seleciona grupos ordenados de códigos-fonte Erlang e configura cada alvo de forma independente. Todas as ações da CLI aceitam projetos. Ver o exemplo funcional.

Manifesto (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 e seleção de alvos

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

Cada alvo selecionado é um lote de compilação separado, com as suas próprias sessões de pré-processamento. O planeamento (descodificar, selecionar, descobrir, verificar colisões de saídas) termina antes de qualquer código-fonte ser processado; a execução processa então os alvos/ficheiros por ordem e regista as falhas. A saída útil vai para stdout pela ordem alvo/ficheiro, sem cabeçalhos; o contexto e os diagnósticos vão para 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

Executáveis

clau --project FILE [--target T]... (sem --emit, sem ação de verificação/impressão) liga cada alvo selecionado que tenha uma chave output ou entry, ou ao qual se dirijam -o/--entry da CLI, num executável por alvo:

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

Criar um projeto

--new-project <filename> escreve um manifesto anotado e nada mais.

Caminhos e descoberta

Opções efetivas

DefiniçãoCombinação do manifesto e da CLI
include_dirsOrdem do manifesto, depois dos -I da CLI (o último -I da CLI é pesquisado primeiro)
source_search_pathsApenas pesquisa de códigos-fonte do projeto
definesPrimeiro o manifesto, depois a CLI; duplicados entre ambos são erros
applicationsMap do manifesto; as entradas da CLI substituem os nomes correspondentes
Listas de featuresDefinições do manifesto, depois as alterações ordenadas da CLI; a CLI prevalece
outputPor alvo, apenas alvos executáveis; -o da CLI substitui-o para um único alvo selecionado
entryPor alvo; --entry da CLI substitui-o para um único alvo selecionado

Dependência de compilação

toml++ 3.4.0 (MIT), privado do compilador, apenas cabeçalhos com exceções, sintaxe não publicada desativada. SHA-256 do arquivo 8517f65938a4faae9ccf8ebb36631a38c1cadfb5efa85d9a72e15b9e97d25155.

Limites

Tamanho do manifesto 1 MiB; no máximo 1024 alvos e 100 000 nós TOML. Cada expansão de códigos-fonte permite 100 000 entradas visitadas, 128 níveis de diretórios e 16 000 000 de transições de curingas. O esgotamento é um erro explícito; estes são limites de trabalho, não prazos de E/S.