Habilidad build2
build2 es una cadena de herramientas integrada de compilación C/C++ que combina un sistema de compilación (b),
gestor de paquetes (bpkg), gestor de dependencias del proyecto (bdep), ejecutor de tareas
(bx) e interfaz web del repositorio (brep). Esta habilidad proporciona documentación de referencia
estructurada para las cinco herramientas.
Comienza con INDEX.md para el índice completo de comandos y la navegación, o usa la tabla a continuación para saltar directamente al archivo relevante.
Cuándo usar
| Tarea | Comienza aquí |
|---|---|
| Escribir o leer un buildfile | guides/build2-intro-concepts.md |
| Sintaxis del lenguaje buildfile (if/loop/switch/patterns) | guides/build2-buildfile-language.md |
| Directivas de buildfile, patrones de nombre y atributos | guides/build2-directives-patterns.md |
Fijar un destino a src en lugar de out (calificación @./) | guides/build2-targets-variables.md |
| Crear directorios anidados con fsdir{} | HOWTO/fsdir-parent-chain.md |
| Consultar la firma de una función de buildfile, indicadores o pureza | guides/build2-functions.md |
| Proyectos de bibliotecas, importación de destinos, subproyectos | guides/build2-projects-advanced.md |
| Importar una biblioteca para metadatos y aún enlazarla (incluyendo instalada) | HOWTO/import-immediate-vs-ordinary.md |
| Agregar rpath para una dependencia solo dlopen (nunca enlazada) | HOWTO/rpath-unlinked-dependency.md |
Escribir una receta ad hoc ({{ }}) | HOWTO/ad-hoc-recipe.md |
Compartir el cuerpo de una receta entre varios destinos mediante patrones de nombre ~/^ | HOWTO/ad-hoc-pattern-rule.md |
| Crear un destino equivalente a PHONY (alias{}) | HOWTO/alias-targets.md |
| Qué opciones de compilación/enlace pertenecen a un buildfile | HOWTO/buildfile-compile-options.md |
| Colocar un indicador de compilación después del modo del compilador o -std | HOWTO/buildfile-compile-options.md |
| Elegir += vs = para una lista específica de destino | HOWTO/buildfile-compile-options.md |
| Migrar un proyecto CMake a buildfiles de build2 | HOWTO/migrate-from-cmake.md |
| Mantener el grafo de compilación independiente de la configuración | HOWTO/config-independent-build-graph.md |
| Opciones de compilación y enlace C/C++, soporte de módulos | guides/build2-modules-cxx.md |
| Variables comunes de C, exportación de DLL, base de datos de compilación, clase de compilador vs. ID | guides/build2-modules-cc.md |
| Tipos de destino bin/liba/libs/exe | guides/build2-modules-bin.md |
| Coincidir con el nombre o SONAME de una biblioteca compartida ascendente | HOWTO/match-upstream-library-name.md |
| Crear una biblioteca solo de encabezados (sin bin) | HOWTO/header-only-library.md |
| Enlazar pthread | HOWTO/link-pthread.md |
| Enlazar una biblioteca del sistema (-lm, -ldl, advapi32.lib) | HOWTO/link-system-library.md |
| Incrustar un recurso .rc de Windows (VERSIONINFO) en una DLL | HOWTO/windows-resource-file.md |
| Ordenar fuentes antes que bibliotecas en un destino de enlace | HOWTO/link-prerequisite-order.md |
| Hacer que los componentes de la biblioteca sean opcionales | HOWTO/optional-library-components.md |
| Usar encabezados C/C++ generados automáticamente | HOWTO/generated-headers.md |
| Crear una biblioteca que proporcione main() | HOWTO/library-provides-main.md |
| Deshabilitar la variante de biblioteca compartida por plataforma | HOWTO/disable-shared-lib-per-platform.md |
| Exportar metadatos desde ejecutables o bibliotecas | HOWTO/target-metadata.md |
| Probar un import! instalado localmente contra un prefijo real | HOWTO/local-installed-import.md |
| Agregar/eliminar paquetes, resolver conflictos de versión | bpkg/README.md |
| Construir un paquete, actualizar o aplicar parches | bpkg/bpkg-pkg-build.md |
| Crear una configuración bpkg (independiente, sin proyecto bdep) | bpkg/bpkg-cfg-create.md |
| Crear una configuración e inicializar un proyecto bdep en ella | bdep/bdep-init.md |
| Inicializar un proyecto en una configuración existente | bdep/bdep-init.md |
| Sincronizar manifiesto/archivo de bloqueo con configuración | bdep/bdep-sync.md |
| Crear un nuevo proyecto | bdep/bdep-new.md |
Ver qué combinación de opciones crea bdep new | bdep/bdep-new-layouts.md |
| Publicar un paquete | bdep/bdep-publish.md |
| Publicar una nueva versión | bdep/bdep-release.md |
| Escribir testscripts | guides/testscript-summary.md |
| Comandos de testscript, redirecciones, regex, limpieza, builtins | guides/testscript-commands.md |
| Sanitizar pruebas con mal comportamiento con Testscript | HOWTO/sanitize-tests.md |
| Usar assert() correctamente en pruebas | HOWTO/assert-in-tests.md |
| Pruebas con dependencias adicionales (paquete de prueba separado) | HOWTO/tests-extra-dependencies.md |
| Escribir un resumen lib-tests/examples/benchmarks o PACKAGE-README | HOWTO/tests-extra-dependencies.md |
| Construir solo lo necesario para prueba o instalación | HOWTO/update-for-test-install.md |
| Configurar accesorios de prueba en tiempo de ejecución (helpers hijos, datos del árbol de fuentes) | HOWTO/test-runtime-fixtures.md |
| Dar a las pruebas acceso a directorios de datos del árbol de fuentes | HOWTO/test-runtime-fixtures.md |
| Excluir accesorios/recursos de prueba de un archivo b dist | HOWTO/exclude-test-data-from-dist.md |
Probar con testscript un ejecutable importado (ej. el propio exe{} de un paquete desde tests/) | HOWTO/test-imported-executable.md |
| Resolver conflictos "ya actualizado pero [no] para instalación" | HOWTO/for-install-conflicts.md |
| Empaquetar una biblioteca de terceros | guides/packaging-guide-summary.md |
| Ejecutar el flujo de trabajo completo de empaquetado para cppget.org | skills/build2-package/SKILL.md |
| Ejecutar la verificación de cordura de empaquetado previa a la publicación | skills/build2-review/SKILL.md |
| Nombrar un paquete, proyecto y repositorio de terceros | HOWTO/package-naming.md |
| Iniciar un paquete de terceros en la rama de revisión | guides/packaging-guide-summary.md |
Requerir una característica de dependencia desde una cláusula depends | HOWTO/require-dependency-feature.md |
| Cómo un repositorio pkg vs git encuentra dependencias | guides/packaging-guide-summary.md |
| Probar y publicar un paquete de terceros | guides/packaging-guide-testing.md |
| Revisar un envío de paquete de terceros | guides/packaging-guide-review.md |
| Gestión de versiones de empaquetado (nueva revisión, nueva versión) | guides/packaging-guide-version-management.md |
| Antipatrones de empaquetado, qué no hacer | guides/packaging-guide-antipatterns.md |
| Manejar encabezados privados al empaquetar un proyecto de terceros | HOWTO/third-party-private-headers.md |
| Instalar páginas man (cualquier sección que no sea la 1) | HOWTO/man-pages-install.md |
| Empaquetar un changelog ascendente con un nombre no canónico | HOWTO/package-changes-file.md |
| Reglas de nombre de paquete bpkg, formato de versión, sintaxis de restricción | guides/bpkg-package-name-version.md |
| Expresar una licencia de paquete en el manifiesto (SPDX, other:, licencias múltiples) | guides/packaging-license.md |
| Instalar o arrancar la cadena de herramientas | guides/install-bootstrap.md |
| Instalar cadena de herramientas desde el repositorio (paso 3) | guides/install-toolchain.md |
| Actualizar una cadena de herramientas instalada (sucia o por etapas) | guides/install-upgrade.md |
| Usar preprocesamiento de plantillas .in o módulo bash | guides/build2-modules-misc.md |
| Módulo de versión: variables, versiones de instantánea, encabezados de versión | guides/build2-module-version.md |
| Procesar config.h.in / config.h.cmake / config.h.meson | guides/build2-modules-autoconf.md |
| Agregar comprobaciones de autoconf específicas del proyecto | guides/build2-autoconf-project-checks.md |
| Contribuir con una comprobación al catálogo integrado de autoconf | guides/build2-autoconf-contributing-checks.md |
| Usar resultados de comprobaciones de autoconf en buildfiles | guides/build2-autoconf-buildfile.md |
| kconfig: Referencia del lenguaje Kconfig (entradas de configuración, dependencias, menús, opciones) | guides/kconfig-summary.md |
| kconfig: Integración con el sistema de compilación y ejemplos | guides/kconfig-integration.md |
| kconfig: Opciones auxiliares, recetas de configuración no interactivas/aleatorias | guides/kconfig-patterns.md |
| Crear un módulo build2 personalizado (reglas, init, boot) | guides/build2-module-hello.md |
| Entender la API del módulo build2 (puntos de entrada, module_functions) | guides/build2-module-hello.md |
| Desarrollar un módulo build2 en fase de arranque | guides/build2-module-hello.md |
| Escribir una regla build2 personalizada (match, apply, recipe, register) | HOWTO/write-build2-rule.md |
| Configurar un entorno de desarrollo de módulos build2 | guides/build2-module-dev-setup.md |
| Dividir configuraciones de compilación host/target para desarrollo de módulos | guides/build2-module-dev-setup.md |
| Usar un módulo en versión de desarrollo en otros proyectos | guides/build2-module-dev-setup.md |
| Configurar compilación cruzada con tripletas de destino | HOWTO/cross-compilation.md |
| Gestionar configuraciones debug/release/sanitize | HOWTO/multiple-configurations.md |
| Configurar un pipeline CI/CD para un proyecto build2 | HOWTO/ci-cd-setup.md |
| Filtrar compilaciones automatizadas de CI para plataformas específicas | HOWTO/builds-ci-filtering.md |
| Rastrear si un patrón build-include/build-exclude coincide con un nombre de bot | HOWTO/builds-ci-filtering.md |
| Leer resultados de CI de cppget.org (insignias test-installed) | HOWTO/ci-results.md |
| Solicitar una biblioteca proporcionada por el sistema en un bot de CI específico | HOWTO/sys-build-config.md |
| Configurar build2 para desarrollo de la cadena de herramientas | HOWTO/toolchain-dev-setup.md |
| Andamiar un nuevo directorio de paquete bpkg | scripts/new-package.sh |
| Ejecutar scripts .bx o tareas nombradas | bx/bx.md |
| Comenzar con scripts .bx (tutorial práctico) | HOWTO/bx-script.md |
| Verificar que la cadena de herramientas está instalada | scripts/verify-install.sh |
| Encontrar un compilador C++ para config.cxx= | scripts/probe-compiler.sh |
| Validar un archivo de manifiesto de paquete | scripts/check-manifest.sh |
| Ejecutar pruebas en una configuración bpkg | scripts/run-tests.sh |
| Inspeccionar nombre/versión/raíces del proyecto | scripts/show-project-info.sh |
| Verificar enlaces rotos en la documentación | scripts/check-links.sh |
| Desplegar una interfaz web de repositorio de paquetes brep | brep/README.md |
| Cargar datos del repositorio en brep | brep/brep-load.md |
| Caducar compilaciones antiguas o archivar inquilinos en brep | brep/brep-clean.md |
| Configurar o migrar bases de datos de brep | brep/brep-migrate.md |
| Monitorear la infraestructura de compilación de brep en busca de retrasos | brep/brep-monitor.md |
| Limpiar directorios de carga de distribución binaria | brep/brep-upload-bindist-clean.md |
| Implementar un manejador de envío de paquetes o CI | brep/brep-request-handling.md |
| Entender el protocolo de envío de paquetes de brep | brep/brep-request-handling.md |
| Entender el protocolo de solicitud CI de brep | brep/brep-request-handling.md |
| Solucionar errores | HOWTO/troubleshooting.md |
| Recetas prácticas por tema | HOWTO/README.md |
| Referencia de terminología | GLOSSARY.md |
Orientación rápida de herramientas
| Binario | Rol | Cargar cuando |
|---|---|---|
b | Sistema de compilación | Escribir/leer buildfiles, diagnosticar errores de compilación, configurar instalaciones |
bpkg | Gestor de paquetes | Gestionar dependencias, resolver conflictos, crear configuraciones independientes |
bdep | Gestor de dependencias del proyecto | Inicializar proyectos, sincronizar configuraciones, publicar versiones |
bx | Ejecutor de tareas | Ejecutar scripts .bx o tareas nombradas |
brep | Interfaz web del repositorio | Desplegar repositorios de paquetes, gestionar envíos y CI |