Compétence build2
build2 est une chaîne d'outils intégrée de construction C/C++ combinant un système de construction (b),
gestionnaire de paquets (bpkg), gestionnaire de dépendances de projet (bdep), exécuteur de tâches
(bx), et interface web de dépôt (brep). Cette compétence fournit une documentation de référence
structurée pour les cinq outils.
Commencez par INDEX.md pour l'index complet des commandes et la navigation, ou utilisez le tableau ci-dessous pour accéder directement au fichier pertinent.
Quand utiliser
| Tâche | Commencez ici |
|---|---|
| Écrire ou lire un fichier de construction | guides/build2-intro-concepts.md |
| Syntaxe du langage des fichiers de construction (if/loop/switch/patterns) | guides/build2-buildfile-language.md |
| Directives, motifs de noms et attributs des fichiers de construction | guides/build2-directives-patterns.md |
Épingler une cible à src au lieu de out (qualification @./) | guides/build2-targets-variables.md |
| Créer des répertoires imbriqués avec fsdir{} | HOWTO/fsdir-parent-chain.md |
| Rechercher la signature, les flags ou la pureté d'une fonction de fichier de construction | guides/build2-functions.md |
| Projets de bibliothèque, importation de cibles, sous-projets | guides/build2-projects-advanced.md |
| Importer une bibliothèque pour ses métadonnées tout en la liant (y compris installée) | HOWTO/import-immediate-vs-ordinary.md |
| Ajouter rpath pour une dépendance uniquement dlopen (jamais liée) | HOWTO/rpath-unlinked-dependency.md |
Écrire une recette ad hoc ({{ }}) | HOWTO/ad-hoc-recipe.md |
Partager un corps de recette entre plusieurs cibles via les motifs de noms ~/^ | HOWTO/ad-hoc-pattern-rule.md |
| Créer une cible équivalente à PHONY (alias{}) | HOWTO/alias-targets.md |
| Quelles options de compilation/lien placer dans un fichier de construction | HOWTO/buildfile-compile-options.md |
| Placer un flag de compilation après le mode compilateur ou -std | HOWTO/buildfile-compile-options.md |
| Choisir += vs = pour une liste spécifique à une cible | HOWTO/buildfile-compile-options.md |
| Porter un projet CMake vers des fichiers de construction build2 | HOWTO/migrate-from-cmake.md |
| Garder le graphe de construction indépendant de la configuration | HOWTO/config-independent-build-graph.md |
| Options de compilation et de lien C/C++, support des modules | guides/build2-modules-cxx.md |
| Variables communes C, exportation DLL, base de données de compilation, classe vs. ID du compilateur | guides/build2-modules-cc.md |
| Types de cibles bin/liba/libs/exe | guides/build2-modules-bin.md |
| Correspondre au nom ou SONAME d'une bibliothèque partagée amont | HOWTO/match-upstream-library-name.md |
| Créer une bibliothèque header-only (sans binaire) | HOWTO/header-only-library.md |
| Lier pthread | HOWTO/link-pthread.md |
| Lier une bibliothèque système (-lm, -ldl, advapi32.lib) | HOWTO/link-system-library.md |
| Intégrer une ressource Windows .rc (VERSIONINFO) dans une DLL | HOWTO/windows-resource-file.md |
| Ordonner les sources avant les bibliothèques sur une cible de lien | HOWTO/link-prerequisite-order.md |
| Rendre les composants de bibliothèque optionnels | HOWTO/optional-library-components.md |
| Utiliser des en-têtes C/C++ générés automatiquement | HOWTO/generated-headers.md |
| Créer une bibliothèque qui fournit main() | HOWTO/library-provides-main.md |
| Désactiver la variante de bibliothèque partagée par plateforme | HOWTO/disable-shared-lib-per-platform.md |
| Exporter des métadonnées depuis des exécutables ou des bibliothèques | HOWTO/target-metadata.md |
| Tester un import! installé localement contre un préfixe réel | HOWTO/local-installed-import.md |
| Ajouter/supprimer des paquets, résoudre les conflits de version | bpkg/README.md |
| Construire un paquet, le mettre à niveau ou le corriger | bpkg/bpkg-pkg-build.md |
| Créer une configuration bpkg (autonome, sans projet bdep) | bpkg/bpkg-cfg-create.md |
| Créer une configuration et initialiser un projet bdep dedans | bdep/bdep-init.md |
| Initialiser un projet dans une configuration existante | bdep/bdep-init.md |
| Synchroniser le manifeste/fichier de verrouillage avec la configuration | bdep/bdep-sync.md |
| Créer un nouveau projet | bdep/bdep-new.md |
Voir ce que produit une combinaison d'options de bdep new | bdep/bdep-new-layouts.md |
| Publier un paquet | bdep/bdep-publish.md |
| Publier une nouvelle version | bdep/bdep-release.md |
| Écrire des scripts de test | guides/testscript-summary.md |
| Commandes Testscript, redirections, regex, nettoyage, fonctions intégrées | guides/testscript-commands.md |
| Nettoyer les tests mal comportés avec Testscript | HOWTO/sanitize-tests.md |
| Utiliser assert() correctement dans les tests | HOWTO/assert-in-tests.md |
| Tests avec dépendances supplémentaires (paquet de test séparé) | HOWTO/tests-extra-dependencies.md |
| Écrire un résumé lib-tests/examples/benchmarks ou PACKAGE-README | HOWTO/tests-extra-dependencies.md |
| Construire uniquement ce qui est nécessaire pour le test ou l'installation | HOWTO/update-for-test-install.md |
| Câbler des fixtures de test d'exécution (aides enfants, données d'arborescence source) | HOWTO/test-runtime-fixtures.md |
| Donner aux tests l'accès aux répertoires de données de l'arborescence source | HOWTO/test-runtime-fixtures.md |
| Exclure les fixtures/ressources de test d'une archive b dist | HOWTO/exclude-test-data-from-dist.md |
Tester avec Testscript un exécutable importé (par exemple, le propre exe{} d'un paquet depuis tests/) | HOWTO/test-imported-executable.md |
| Résoudre les conflits "déjà mis à jour mais [pas] pour l'installation" | HOWTO/for-install-conflicts.md |
| Empaqueter une bibliothèque tierce | guides/packaging-guide-summary.md |
| Exécuter le workflow de packaging de bout en bout cppget.org | skills/build2-package/SKILL.md |
| Exécuter la vérification de santé locale de pré-publication | skills/build2-review/SKILL.md |
| Nommer un paquet, projet et dépôt tiers | HOWTO/package-naming.md |
| Démarrer un paquet tiers sur la branche de révision | guides/packaging-guide-summary.md |
Exiger une fonctionnalité de dépendance depuis une clause depends | HOWTO/require-dependency-feature.md |
| Comment un dépôt pkg vs git trouve les dépendances | guides/packaging-guide-summary.md |
| Tester et publier un paquet tiers | guides/packaging-guide-testing.md |
| Réviser une soumission de paquet tiers | guides/packaging-guide-review.md |
| Gestion des versions de packaging (nouvelle révision, nouvelle version) | guides/packaging-guide-version-management.md |
| Anti-patrons de packaging, ce qu'il ne faut pas faire | guides/packaging-guide-antipatterns.md |
| Gérer les en-têtes privés lors du packaging d'un projet tiers | HOWTO/third-party-private-headers.md |
| Installer des pages de manuel (toute section autre que 1) | HOWTO/man-pages-install.md |
| Empaqueter un journal de modifications amont avec un nom non canonique | HOWTO/package-changes-file.md |
| Règles de nom des paquets bpkg, format de version, syntaxe des contraintes | guides/bpkg-package-name-version.md |
| Exprimer une licence de paquet dans le manifeste (SPDX, other:, licences multiples) | guides/packaging-license.md |
| Installer ou amorcer la chaîne d'outils | guides/install-bootstrap.md |
| Installer la chaîne d'outils depuis un dépôt (étape 3) | guides/install-toolchain.md |
| Mettre à niveau une chaîne d'outils installée (sale ou organisée) | guides/install-upgrade.md |
| Utiliser le prétraitement de template .in ou le module bash | guides/build2-modules-misc.md |
| Module version : variables, versions instantanées, en-têtes de version | guides/build2-module-version.md |
| Traiter config.h.in / config.h.cmake / config.h.meson | guides/build2-modules-autoconf.md |
| Ajouter des vérifications autoconf spécifiques au projet | guides/build2-autoconf-project-checks.md |
| Contribuer une vérification au catalogue intégré autoconf | guides/build2-autoconf-contributing-checks.md |
| Utiliser les résultats des vérifications autoconf dans les fichiers de construction | guides/build2-autoconf-buildfile.md |
| kconfig : référence du langage Kconfig (entrées de configuration, dépendances, menus, choix) | guides/kconfig-summary.md |
| kconfig : intégration au système de construction et exemples | guides/kconfig-integration.md |
| kconfig : options d'aide, recettes de configuration non interactives/aléatoires | guides/kconfig-patterns.md |
| Créer un module build2 personnalisé (règles, init, boot) | guides/build2-module-hello.md |
| Comprendre l'API du module build2 (points d'entrée, module_functions) | guides/build2-module-hello.md |
| Développer un module build2 en phase d'amorçage | guides/build2-module-hello.md |
| Écrire une règle build2 personnalisée (match, apply, recipe, register) | HOWTO/write-build2-rule.md |
| Configurer un environnement de développement de module build2 | guides/build2-module-dev-setup.md |
| Diviser les configurations de construction hôte/cible pour le développement de modules | guides/build2-module-dev-setup.md |
| Utiliser un module en version de développement dans d'autres projets | guides/build2-module-dev-setup.md |
| Configurer la compilation croisée avec des triplets de cible | HOWTO/cross-compilation.md |
| Gérer les configurations debug/release/sanitize | HOWTO/multiple-configurations.md |
| Configurer un pipeline CI/CD pour un projet build2 | HOWTO/ci-cd-setup.md |
| Filtrer les constructions CI automatisées pour des plateformes spécifiques | HOWTO/builds-ci-filtering.md |
| Tracer si un motif build-include/build-exclude correspond à un nom de bot | HOWTO/builds-ci-filtering.md |
| Lire les résultats CI de cppget.org (badges test-installed) | HOWTO/ci-results.md |
| Demander une bibliothèque fournie par le système sur un bot CI spécifique | HOWTO/sys-build-config.md |
| Configurer build2 pour le développement de la chaîne d'outils | HOWTO/toolchain-dev-setup.md |
| Élaborer un nouveau répertoire de paquet bpkg | scripts/new-package.sh |
| Exécuter des scripts .bx ou des tâches nommées | bx/bx.md |
| Démarrer avec les scripts .bx (procédure pratique) | HOWTO/bx-script.md |
| Vérifier que la chaîne d'outils est installée | scripts/verify-install.sh |
| Trouver un compilateur C++ pour config.cxx= | scripts/probe-compiler.sh |
| Valider un fichier manifeste de paquet | scripts/check-manifest.sh |
| Exécuter les tests dans une configuration bpkg | scripts/run-tests.sh |
| Inspecter le nom/version/racines d'un projet | scripts/show-project-info.sh |
| Vérifier les liens brisés dans la documentation | scripts/check-links.sh |
| Déployer une interface web de dépôt de paquets brep | brep/README.md |
| Charger les données du dépôt dans brep | brep/brep-load.md |
| Expirer les anciennes constructions ou archiver les locataires dans brep | brep/brep-clean.md |
| Configurer ou migrer les bases de données brep | brep/brep-migrate.md |
| Surveiller l'infrastructure de construction brep pour les retards | brep/brep-monitor.md |
| Nettoyer les répertoires de téléchargement de distribution binaire | brep/brep-upload-bindist-clean.md |
| Implémenter un gestionnaire de soumission de paquet ou CI | brep/brep-request-handling.md |
| Comprendre le protocole de soumission de paquet brep | brep/brep-request-handling.md |
| Comprendre le protocole de requête CI brep | brep/brep-request-handling.md |
| Résoudre les erreurs | HOWTO/troubleshooting.md |
| Recettes pratiques par sujet | HOWTO/README.md |
| Référence terminologique | GLOSSARY.md |
Orientation rapide des outils
| Binaire | Rôle | Charger quand |
|---|---|---|
b | Système de construction | Construire, lier, exécuter des fichiers de construction |
bpkg | Gestionnaire de paquets | Ajouter/supprimer/mettre à jour des dépendances, créer des configurations autonomes |
bdep | Gestionnaire de dépendances de projet | Initialiser des projets, synchroniser des configurations, publier |
bx | Exécuteur de tâches | Exécuter des scripts .bx ou des tâches nommées |
brep | Interface web de dépôt | Héberger, afficher et gérer le contenu d'un dépôt de paquets |
Guide de démarrage rapide
- Installer la chaîne d'outils : Suivez guides/install-toolchain.md.
- Créer un projet : Utilisez
bdep new --type exe hello(voir bdep/bdep-new.md). - Initialiser une configuration :
bdep init -C @gcc(voir bdep/bdep-init.md). - Construire :
bdans le répertoire du projet. - Tester :
bdep test.
Ressources principales
- INDEX.md – Index complet des commandes et navigation
- GLOSSARY.md – Définitions des termes build2
- HOWTO/README.md – Recettes pratiques
- scripts/ – Scripts d'assistance
- brep/README.md – Documentation du dépôt web
- bpkg/README.md – Documentation de bpkg
- bdep/ – Documentation de bdep
- bx/bx.md – Documentation de l'exécuteur de tâches