Skill build2
build2 é uma toolchain integrada de construção C/C++ que combina um sistema de compilação (b),
gerenciador de pacotes (bpkg), gerenciador de dependências do projeto (bdep), executor de tarefas
(bx) e interface web de repositório (brep). Esta skill fornece documentação de referência
estruturada para todas as cinco ferramentas.
Comece com INDEX.md para o índice completo de comandos e navegação, ou use a tabela abaixo para pular diretamente para o arquivo relevante.
Quando usar
| Tarefa | Comece aqui |
|---|---|
| Escrever ou ler um buildfile | guides/build2-intro-concepts.md |
| Sintaxe da linguagem do buildfile (if/loop/switch/patterns) | guides/build2-buildfile-language.md |
| Diretivas do buildfile, padrões de nome e atributos | guides/build2-directives-patterns.md |
Fixar um destino para src em vez de out (qualificação @./) | guides/build2-targets-variables.md |
| Criar diretórios aninhados com fsdir{} | HOWTO/fsdir-parent-chain.md |
| Consultar assinatura de função do buildfile, flags ou pureza | guides/build2-functions.md |
| Projetos de biblioteca, importação de destino, subprojetos | guides/build2-projects-advanced.md |
| Importar uma biblioteca para metadados e ainda vinculá-la (incluindo instalada) | HOWTO/import-immediate-vs-ordinary.md |
| Adicionar rpath para uma dependência dlopen-only (nunca vinculada) | HOWTO/rpath-unlinked-dependency.md |
Escrever uma receita ad hoc ({{ }}) | HOWTO/ad-hoc-recipe.md |
Compartilhar um corpo de receita entre vários destinos usando padrões de nome ~/^ | HOWTO/ad-hoc-pattern-rule.md |
| Criar um destino equivalente a PHONY (alias{}) | HOWTO/alias-targets.md |
| Quais opções de compilação/link pertencem a um buildfile | HOWTO/buildfile-compile-options.md |
| Colocar uma flag de compilação após o modo do compilador ou -std | HOWTO/buildfile-compile-options.md |
| Escolher += vs = para uma lista específica de destino | HOWTO/buildfile-compile-options.md |
| Portar um projeto CMake para buildfiles do build2 | HOWTO/migrate-from-cmake.md |
| Manter o grafo de compilação independente de configuração | HOWTO/config-independent-build-graph.md |
| Opções de compilação e link C/C++, suporte a módulos | guides/build2-modules-cxx.md |
| Variáveis comuns C, exportação de DLL, banco de dados de compilação, classe do compilador vs. ID | guides/build2-modules-cc.md |
| Tipos de destino bin/liba/libs/exe | guides/build2-modules-bin.md |
| Corresponder a um nome de biblioteca compartilhada upstream ou SONAME | HOWTO/match-upstream-library-name.md |
| Criar uma biblioteca apenas de cabeçalho (sem bin) | HOWTO/header-only-library.md |
| Vincular pthread | HOWTO/link-pthread.md |
| Vincular uma biblioteca de sistema (-lm, -ldl, advapi32.lib) | HOWTO/link-system-library.md |
| Incorporar um recurso .rc do Windows (VERSIONINFO) em uma DLL | HOWTO/windows-resource-file.md |
| Ordenar fontes antes de bibliotecas em um destino de link | HOWTO/link-prerequisite-order.md |
| Tornar componentes de biblioteca opcionais | HOWTO/optional-library-components.md |
| Usar cabeçalhos C/C++ gerados automaticamente | HOWTO/generated-headers.md |
| Criar uma biblioteca que fornece main() | HOWTO/library-provides-main.md |
| Desabilitar variante de biblioteca compartilhada por plataforma | HOWTO/disable-shared-lib-per-platform.md |
| Exportar metadados de executáveis ou bibliotecas | HOWTO/target-metadata.md |
| Testar um import! instalado localmente contra um prefixo real | HOWTO/local-installed-import.md |
| Adicionar/remover pacotes, resolver conflitos de versão | bpkg/README.md |
| Construir um pacote, atualizar ou corrigir | bpkg/bpkg-pkg-build.md |
| Criar uma configuração bpkg (autônoma, sem projeto bdep) | bpkg/bpkg-cfg-create.md |
| Criar uma configuração e inicializar um projeto bdep nela | bdep/bdep-init.md |
| Inicializar um projeto em uma configuração existente | bdep/bdep-init.md |
| Sincronizar manifesto/arquivo de bloqueio com configuração | bdep/bdep-sync.md |
| Criar um novo projeto | bdep/bdep-new.md |
Ver o que uma combinação de opções bdep new cria | bdep/bdep-new-layouts.md |
| Publicar um pacote | bdep/bdep-publish.md |
| Lançar uma nova versão | bdep/bdep-release.md |
| Escrever testscripts | guides/testscript-summary.md |
| Comandos do Testscript, redirecionamentos, regex, limpeza, builtins | guides/testscript-commands.md |
| Sanitizar testes com mau comportamento usando Testscript | HOWTO/sanitize-tests.md |
| Usar assert() corretamente em testes | HOWTO/assert-in-tests.md |
| Testes com dependências extras (pacote de teste separado) | HOWTO/tests-extra-dependencies.md |
| Escrever um resumo lib-tests/examples/benchmarks ou PACKAGE-README | HOWTO/tests-extra-dependencies.md |
| Construir apenas o necessário para teste ou instalação | HOWTO/update-for-test-install.md |
| Configurar fixtures de teste em tempo de execução (helpers filhos, dados de árvore de origem) | HOWTO/test-runtime-fixtures.md |
| Dar acesso a testes a diretórios de dados da árvore de origem | HOWTO/test-runtime-fixtures.md |
| Excluir fixtures/recursos de teste de um arquivo b dist | HOWTO/exclude-test-data-from-dist.md |
Testar usando Testscript um executável importado (ex.: exe{} do próprio pacote em tests/) | HOWTO/test-imported-executable.md |
| Resolver conflitos "already updated but [not] for install" | HOWTO/for-install-conflicts.md |
| Empacotar uma biblioteca de terceiros | guides/packaging-guide-summary.md |
| Executar o fluxo de trabalho de empacotamento de ponta a ponta do cppget.org | skills/build2-package/SKILL.md |
| Executar a verificação de sanidade de empacotamento local antes da publicação | skills/build2-review/SKILL.md |
| Nomear um pacote, projeto e repositório de terceiros | HOWTO/package-naming.md |
| Iniciar um pacote de terceiros no branch de revisão | guides/packaging-guide-summary.md |
Exigir um recurso de dependência de uma cláusula depends | HOWTO/require-dependency-feature.md |
| Como um repositório pkg vs git encontra dependências | guides/packaging-guide-summary.md |
| Testar e publicar um pacote de terceiros | guides/packaging-guide-testing.md |
| Revisar uma submissão de pacote de terceiros | guides/packaging-guide-review.md |
| Gerenciamento de versão de empacotamento (nova revisão, nova versão) | guides/packaging-guide-version-management.md |
| Antipadrões de empacotamento, o que não fazer | guides/packaging-guide-antipatterns.md |
| Lidar com cabeçalhos privados ao empacotar um projeto de terceiros | HOWTO/third-party-private-headers.md |
| Instalar páginas de manual (qualquer seção diferente de 1) | HOWTO/man-pages-install.md |
| Empacotar um changelog upstream com um nome não canônico | HOWTO/package-changes-file.md |
| Regras de nome de pacote bpkg, formato de versão, sintaxe de restrição | guides/bpkg-package-name-version.md |
| Expressar uma licença de pacote no manifesto (SPDX, other:, múltiplas licenças) | guides/packaging-license.md |
| Instalar ou inicializar a toolchain | guides/install-bootstrap.md |
| Instalar a toolchain a partir do repositório (passo 3) | guides/install-toolchain.md |
| Atualizar uma toolchain instalada (suja ou estagiada) | guides/install-upgrade.md |
| Usar pré-processamento de template .in ou módulo bash | guides/build2-modules-misc.md |
| Módulo version: variáveis, versões snapshot, cabeçalhos de versão | guides/build2-module-version.md |
| Processar config.h.in / config.h.cmake / config.h.meson | guides/build2-modules-autoconf.md |
| Adicionar verificações de autoconf específicas do projeto | guides/build2-autoconf-project-checks.md |
| Contribuir com uma verificação para o catálogo builtin do autoconf | guides/build2-autoconf-contributing-checks.md |
| Usar resultados de verificação do autoconf em buildfiles | guides/build2-autoconf-buildfile.md |
| kconfig: referência da linguagem Kconfig (entradas de config, dependências, menus, choices) | guides/kconfig-summary.md |
| kconfig: integração com sistema de compilação e exemplos | guides/kconfig-integration.md |
| kconfig: opções auxiliares, receitas de configuração não interativas/aleatórias | guides/kconfig-patterns.md |
| Criar um módulo build2 personalizado (regras, init, boot) | guides/build2-module-hello.md |
| Entender a API do módulo build2 (pontos de entrada, module_functions) | guides/build2-module-hello.md |
| Desenvolver um módulo build2 em fase de inicialização | guides/build2-module-hello.md |
| Escrever uma regra build2 personalizada (match, apply, recipe, register) | HOWTO/write-build2-rule.md |
| Configurar um ambiente de desenvolvimento de módulo build2 | guides/build2-module-dev-setup.md |
| Dividir configurações de compilação host/target para desenvolvimento de módulo | guides/build2-module-dev-setup.md |
| Usar um módulo em versão de desenvolvimento em outros projetos | guides/build2-module-dev-setup.md |
| Configurar compilação cruzada com tripletos de destino | HOWTO/cross-compilation.md |
| Gerenciar configurações debug/release/sanitize | HOWTO/multiple-configurations.md |
| Configurar um pipeline de CI/CD para um projeto build2 | HOWTO/ci-cd-setup.md |
| Filtrar compilações CI automatizadas para plataformas específicas | HOWTO/builds-ci-filtering.md |
| Rastrear se um padrão build-include/build-exclude corresponde a um nome de bot | HOWTO/builds-ci-filtering.md |
| Ler resultados de CI do cppget.org (badges test-installed) | HOWTO/ci-results.md |
| Solicitar uma biblioteca fornecida pelo sistema em um bot CI específico | HOWTO/sys-build-config.md |
| Configurar build2 para desenvolvimento da toolchain | HOWTO/toolchain-dev-setup.md |
| Estruturar um novo diretório de pacote bpkg | scripts/new-package.sh |
| Executar scripts .bx ou tarefas nomeadas | bx/bx.md |
| Começar com scripts .bx (tutorial prático) | HOWTO/bx-script.md |
| Verificar se a toolchain está instalada | scripts/verify-install.sh |
| Encontrar um compilador C++ para config.cxx= | scripts/probe-compiler.sh |
| Validar um arquivo de manifesto de pacote | scripts/check-manifest.sh |
| Executar testes em uma configuração bpkg | scripts/run-tests.sh |
| Inspecionar nome/versão/raízes do projeto | scripts/show-project-info.sh |
| Verificar links quebrados na documentação | scripts/check-links.sh |
| Implantar uma interface web de repositório de pacotes brep | brep/README.md |
| Carregar dados de repositório no brep | brep/brep-load.md |
| Expirar compilações antigas ou arquivar tenants no brep | brep/brep-clean.md |
| Configurar ou migrar bancos de dados do brep | brep/brep-migrate.md |
| Monitorar infraestrutura de compilação do brep por atrasos | brep/brep-monitor.md |
| Limpar diretórios de upload de distribuição binária | brep/brep-upload-bindist-clean.md |
| Implementar um manipulador de submissão de pacote ou CI | brep/brep-request-handling.md |
| Entender o protocolo de submissão de pacote do brep | brep/brep-request-handling.md |
| Entender o protocolo de solicitação de CI do brep | brep/brep-request-handling.md |
| Solucionar erros | HOWTO/troubleshooting.md |
| Receitas práticas por tópico | HOWTO/README.md |
| Referência de terminologia | GLOSSARY.md |
Orientação rápida das ferramentas
| Binário | Função | Carregar quando |
|---|---|---|
b | Sistema de compilação | construir, testar, instalar, gerar configuração |
bpkg | Gerenciador de pacotes | adicionar, remover, atualizar pacotes; resolver conflitos de dependência |
bdep | Gerenciador de dependências do projeto | inicializar projetos, sincronizar dependências, publicar, lançar versões |
bx | Executor de tarefas | executar scripts de automação ou tarefas nomeadas |
brep | Interface web de repositório (servidor) | implantar, carregar, monitorar, lidar com submissões de pacotes |