build2 Skill
build2 ist eine integrierte C/C++-Build-Toolchain, die ein Build-System (b), einen Paketmanager (bpkg), einen Projektabhängigkeitsmanager (bdep), einen Aufgaben-Ausführer (bx) und eine Repository-Weboberfläche (brep) kombiniert. Diese Skill-Datei bietet eine strukturierte Referenz für alle fünf Werkzeuge.
Beginnen Sie mit INDEX.md für den vollständigen Befehlsindex und die Navigation, oder verwenden Sie die folgende Tabelle, um direkt zur relevanten Datei zu springen.
Wann verwenden
| Aufgabe | Hier starten |
|---|---|
| Schreiben oder lesen Sie ein Buildfile | guides/build2-intro-concepts.md |
| Buildfile-Sprachsyntax (if/loop/switch/patterns) | guides/build2-buildfile-language.md |
| Buildfile Direktiven, Namensmuster und Attribute | guides/build2-directives-patterns.md |
Ein Ziel an src statt out binden (@./-Qualifikation) | guides/build2-targets-variables.md |
| Verschachtelte Verzeichnisse mit fsdir{} erstellen | HOWTO/fsdir-parent-chain.md |
| Signatur, Flags oder Reinheit einer Buildfile-Funktion nachschlagen | guides/build2-functions.md |
| Bibliotheksprojekte, Ziel-Import, Unterprojekte | guides/build2-projects-advanced.md |
| Eine Bibliothek für Metadaten importieren und trotzdem linken (einschließlich installierter) | HOWTO/import-immediate-vs-ordinary.md |
| rpath für eine nur per dlopen genutzte (nie gelinkte) Abhängigkeit hinzufügen | HOWTO/rpath-unlinked-dependency.md |
Ein Ad-hoc-Rezept schreiben ({{ }}) | HOWTO/ad-hoc-recipe.md |
Einen Rezeptkörper über mehrere Ziele mit ~/^ Namensmustern teilen | HOWTO/ad-hoc-pattern-rule.md |
| Ein PHONY-Äquivalent (alias{}) Ziel erstellen | HOWTO/alias-targets.md |
| Welche Compile/Link-Optionen in ein Buildfile gehören | HOWTO/buildfile-compile-options.md |
| Ein Compile-Flag nach dem Compiler-Modus oder -std platzieren | HOWTO/buildfile-compile-options.md |
| += vs = für eine zielspezifische Liste wählen | HOWTO/buildfile-compile-options.md |
| Ein CMake-Projekt in build2-Buildfiles portieren | HOWTO/migrate-from-cmake.md |
| Den Build-Graphen konfigurationsunabhängig halten | HOWTO/config-independent-build-graph.md |
| C/C++ Compile- und Link-Optionen, Modulunterstützung | guides/build2-modules-cxx.md |
| C-common Variablen, DLL-Export, Compilationsdatenbank, Compiler-Klasse vs. ID | guides/build2-modules-cc.md |
| bin/liba/libs/exe Zieltypen | guides/build2-modules-bin.md |
| Einen Upstream Shared Library Name oder SONAME abgleichen | HOWTO/match-upstream-library-name.md |
| Eine Header-Only (binlose) Bibliothek erstellen | HOWTO/header-only-library.md |
| pthread linken | HOWTO/link-pthread.md |
| Eine Systembibliothek linken (-lm, -ldl, advapi32.lib) | HOWTO/link-system-library.md |
| Eine Windows-.rc-Ressource (VERSIONINFO) in eine DLL einbetten | HOWTO/windows-resource-file.md |
| Quellen vor Bibliotheken in einem Linkziel anordnen | HOWTO/link-prerequisite-order.md |
| Bibliothekskomponenten optional machen | HOWTO/optional-library-components.md |
| Automatisch generierte C/C++-Header verwenden | HOWTO/generated-headers.md |
| Eine Bibliothek erstellen, die main() bereitstellt | HOWTO/library-provides-main.md |
| Die Shared-Library-Variante pro Plattform deaktivieren | HOWTO/disable-shared-lib-per-platform.md |
| Metadaten aus ausführbaren Dateien oder Bibliotheken exportieren | HOWTO/target-metadata.md |
| Ein installiertes import! lokal gegen ein echtes Prefix testen | HOWTO/local-installed-import.md |
| Pakete hinzufügen/entfernen, Versionkonflikte auflösen | bpkg/README.md |
| Ein Paket bauen, aktualisieren oder patchen | bpkg/bpkg-pkg-build.md |
| Eine bpkg-Konfiguration erstellen (Standalone, kein bdep-Projekt) | bpkg/bpkg-cfg-create.md |
| Eine Konfiguration erstellen und ein bdep-Projekt darin initialisieren | bdep/bdep-init.md |
| Ein Projekt in einer bestehenden Konfiguration initialisieren | bdep/bdep-init.md |
| Manifest/Lockfile mit der Konfiguration synchronisieren | bdep/bdep-sync.md |
| Ein neues Projekt erstellen | bdep/bdep-new.md |
Sehen, was eine bdep new-Optionskombination erzeugt | bdep/bdep-new-layouts.md |
| Ein Paket veröffentlichen | bdep/bdep-publish.md |
| Eine neue Version veröffentlichen | bdep/bdep-release.md |
| Testskripte schreiben | guides/testscript-summary.md |
| Testscript-Befehle, Umleitungen, Regex, Bereinigung, Builtins | guides/testscript-commands.md |
| Fehlverhaltende Tests mit Testscript bereinigen | HOWTO/sanitize-tests.md |
| assert() korrekt in Tests verwenden | HOWTO/assert-in-tests.md |
| Tests mit zusätzlichen Abhängigkeiten (separates Testpaket) | HOWTO/tests-extra-dependencies.md |
| Eine lib-tests/examples/benchmarks-Zusammenfassung oder PACKAGE-README schreiben | HOWTO/tests-extra-dependencies.md |
| Nur das bauen, was für Test oder Installation benötigt wird | HOWTO/update-for-test-install.md |
| Laufzeit-Test-Fixtures einrichten (Child-Helfer, Source-Tree-Daten) | HOWTO/test-runtime-fixtures.md |
| Tests Zugriff auf Source-Tree-Datenverzeichnisse geben | HOWTO/test-runtime-fixtures.md |
| Test-Fixtures/Ressourcen aus einem b dist-Archiv ausschließen | HOWTO/exclude-test-data-from-dist.md |
Einen importierten Executable mit Testscript testen (z. B. ein eigenes exe{} des Pakets aus tests/) | HOWTO/test-imported-executable.md |
| „bereits aktualisiert, aber [nicht] für Installation“-Konflikte auflösen | HOWTO/for-install-conflicts.md |
| Eine Drittanbieter-Bibliothek paketieren | guides/packaging-guide-summary.md |
| Den End-to-End-cppget.org-Paketierungs-Workflow ausführen | skills/build2-package/SKILL.md |
| Den lokalen Pre-Publish-Paketierungs-Sanity-Check ausführen | skills/build2-review/SKILL.md |
| Ein Drittanbieter-Paket, Projekt und Repository benennen | HOWTO/package-naming.md |
| Ein Drittanbieter-Paket auf dem Review-Branch starten | guides/packaging-guide-summary.md |
Ein Abhängigkeitsmerkmal aus einer depends-Klausel anfordern | HOWTO/require-dependency-feature.md |
| Wie ein pkg- vs. git-Repository Abhängigkeiten findet | guides/packaging-guide-summary.md |
| Ein Drittanbieter-Paket testen und veröffentlichen | guides/packaging-guide-testing.md |
| Eine Drittanbieter-Paketeinreichung überprüfen | guides/packaging-guide-review.md |
| Paketierungs-Versionsverwaltung (neue Revision, neue Version) | guides/packaging-guide-version-management.md |
| Paketierungs-Antipatterns, was vermieden werden sollte | guides/packaging-guide-antipatterns.md |
| Private Header beim Paketieren eines Drittanbieter-Projekts behandeln | HOWTO/third-party-private-headers.md |
| Man-Seiten (alle Abschnitte außer 1) installieren | HOWTO/man-pages-install.md |
| Ein Upstream-Changelog mit einem nicht-kanonischen Namen paketieren | HOWTO/package-changes-file.md |
| bpkg-Paketnamenregeln, Versionsformat, Einschränkungssyntax | guides/bpkg-package-name-version.md |
| Eine Paketlizenz im Manifest ausdrücken (SPDX, other:, mehrere Lizenzen) | guides/packaging-license.md |
| Die Toolchain installieren oder bootstrappen | guides/install-bootstrap.md |
| Toolchain aus einem Repository installieren (Schritt 3) | guides/install-toolchain.md |
| Eine installierte Toolchain aktualisieren (dirty oder staged) | guides/install-upgrade.md |
| .in-Template-Vorverarbeitung oder bash-Modul verwenden | guides/build2-modules-misc.md |
| version-Modul: Variablen, Snapshot-Versionen, Version-Header | guides/build2-module-version.md |
| config.h.in / config.h.cmake / config.h.meson verarbeiten | guides/build2-modules-autoconf.md |
| Projektspezifische Autoconf-Prüfungen hinzufügen | guides/build2-autoconf-project-checks.md |
| Eine Prüfung zum integrierten Autoconf-Katalog beitragen | guides/build2-autoconf-contributing-checks.md |
| Autoconf-Prüfergebnisse in Buildfiles verwenden | guides/build2-autoconf-buildfile.md |
| kconfig: Kconfig-Sprachreferenz (Konfigurationseinträge, Abhängigkeiten, Menüs, Auswahlen) | guides/kconfig-summary.md |
| kconfig: Buildsystem-Integration und Beispiele | guides/kconfig-integration.md |
| kconfig: Hilfsoptionen, nicht-interaktive/zufällige Konfigurationsrezepte | guides/kconfig-patterns.md |
| Ein benutzerdefiniertes build2-Modul erstellen (Regeln, init, boot) | guides/build2-module-hello.md |
| Die build2-Modul-API verstehen (Einstiegspunkte, module_functions) | guides/build2-module-hello.md |
| Ein build2-Modul in der Bootstrap-Phase entwickeln | guides/build2-module-hello.md |
| Eine benutzerdefinierte build2-Regel schreiben (match, apply, recipe, register) | HOWTO/write-build2-rule.md |
| Eine build2-Modul-Entwicklungsumgebung einrichten | guides/build2-module-dev-setup.md |
| Host-/Target-Build-Konfigurationen für die Modulentwicklung aufteilen | guides/build2-module-dev-setup.md |
| Ein Dev-Version-Modul in anderen Projekten verwenden | guides/build2-module-dev-setup.md |
| Cross-Kompilierung mit Target-Tripletts einrichten | HOWTO/cross-compilation.md |
| Debug/Release/Sanitize-Konfigurationen verwalten | HOWTO/multiple-configurations.md |
| Eine CI/CD-Pipeline für ein build2-Projekt einrichten | HOWTO/ci-cd-setup.md |
| Automatisierte CI-Builds für bestimmte Plattformen filtern | HOWTO/builds-ci-filtering.md |
| Verfolgen, ob ein build-include/build-exclude-Muster auf einen Bot-Namen passt | HOWTO/builds-ci-filtering.md |
| cppget.org CI-Ergebnisse lesen (Test-Installed-Badges) | HOWTO/ci-results.md |
| Eine systembereitgestellte Bibliothek auf einem bestimmten CI-Bot anfordern | HOWTO/sys-build-config.md |
| build2 für die Toolchain-Entwicklung einrichten | HOWTO/toolchain-dev-setup.md |
| Ein neues bpkg-Paketverzeichnis gerüsten | scripts/new-package.sh |
| .bx-Skripte oder benannte Aufgaben ausführen | bx/bx.md |
| Mit .bx-Skripten beginnen (praktischer Walkthrough) | HOWTO/bx-script.md |
| Überprüfen, ob die Toolchain installiert ist | scripts/verify-install.sh |
| Einen C++-Compiler für config.cxx= finden | scripts/probe-compiler.sh |
| Eine Paket-Manifest-Datei validieren | scripts/check-manifest.sh |
| Tests in einer bpkg-Konfiguration ausführen | scripts/run-tests.sh |
| Projektname/Version/Roots inspizieren | scripts/show-project-info.sh |
| Auf defekte Links in der Dokumentation prüfen | scripts/check-links.sh |
| Eine brep-Paket-Repository-Weboberfläche bereitstellen | brep/README.md |
| Repository-Daten in brep laden | brep/brep-load.md |
| Alte Builds ablaufen lassen oder Mieter in brep archivieren | brep/brep-clean.md |
| brep-Datenbanken einrichten oder migrieren | brep/brep-migrate.md |
| Die brep-Build-Infrastruktur auf Verzögerungen überwachen | brep/brep-monitor.md |
| Binärverteilungs-Upload-Verzeichnisse bereinigen | brep/brep-upload-bindist-clean.md |
| Einen Paketeinreichungs- oder CI-Handler implementieren | brep/brep-request-handling.md |
| Das brep-Paketeinreichungsprotokoll verstehen | brep/brep-request-handling.md |
| Das brep-CI-Anforderungsprotokoll verstehen | brep/brep-request-handling.md |
| Fehler beheben | HOWTO/troubleshooting.md |
| Praktische Rezepte nach Thema | HOWTO/README.md |
| Terminologiereferenz | GLOSSARY.md |
Schnelle Tool-Orientierung
| Binär | Rolle | Laden, wenn |
|---|---|---|
b | Build-System-Treiber | Buildfiles schreiben oder lesen, Build-Fehler diagnostizieren, Build-Konfigurationen verwalten |
bpkg | Paketmanager | Pakete hinzufügen/entfernen, Abhängigkeitskonflikte auflösen, Paketabhängigkeiten bauen/aktualisieren/patchen |
bdep | Projektabhängigkeitsmanager | Projekt initialisieren, Abhängigkeiten synchronisieren, Pakete veröffentlichen, neue Versionen veröffentlichen, neue Projekte erstellen |
bx | Aufgaben-Ausführer | .bx-Skripte oder benannte Aufgaben ausführen |
brep | Repository-Weboberfläche | Eine Repository-Weboberfläche bereitstellen, Repository-Daten laden, CI-Ergebnisse überwachen |
Weiterführende Skills
- Wie man ein Drittanbieter-Paket für die Veröffentlichung auf cppget.org vorbereitet, einschließlich des vollständigen End-to-End-Workflows: skills/build2-package/SKILL.md
- Wie man die lokale Pre-Publish-Paketierungs-Sanity-Prüfung ausführt: skills/build2-review/SKILL.md