build2 スキル
build2 は、ビルドシステム (b)、パッケージマネージャ (bpkg)、プロジェクト依存関係マネージャ (bdep)、タスクランナー (bx)、リポジトリウェブインターフェース (brep) を統合した C/C++ ビルドツールチェーンです。このスキルは、5 つのツールすべてに対する構造化されたリファレンスドキュメントを提供します。
完全なコマンドインデックスとナビゲーションについては INDEX.md から始めるか、以下の表を使用して関連するファイルに直接ジャンプしてください。
使用タイミング
| タスク | 開始場所 |
|---|---|
| ビルドファイルの作成または読み取り | guides/build2-intro-concepts.md |
| ビルドファイル言語構文 (if/loop/switch/patterns) | guides/build2-buildfile-language.md |
| ビルドファイルディレクティブ、名前パターン、属性 | guides/build2-directives-patterns.md |
ターゲットを src に固定(@./ 修飾) | guides/build2-targets-variables.md |
| fsdir{} でネストされたディレクトリを作成 | HOWTO/fsdir-parent-chain.md |
| ビルドファイル関数のシグネチャ、フラグ、純粋性を調べる | guides/build2-functions.md |
| ライブラリプロジェクト、ターゲットインポート、サブプロジェクト | guides/build2-projects-advanced.md |
| メタデータ用にライブラリをインポートし、依然としてリンクする(インストール済みを含む) | HOWTO/import-immediate-vs-ordinary.md |
| dlopen のみ(リンクしない)依存関係に rpath を追加 | HOWTO/rpath-unlinked-dependency.md |
アドホックレシピ ({{ }}) を作成 | HOWTO/ad-hoc-recipe.md |
~/^ 名前パターンを使用して複数のターゲット間でレシピ本文を共有 | HOWTO/ad-hoc-pattern-rule.md |
| PHONY 相当のターゲット (alias{}) を作成 | HOWTO/alias-targets.md |
| どのコンパイル/リンクオプションをビルドファイルに含めるべきか | HOWTO/buildfile-compile-options.md |
| コンパイルフラグをコンパイラモードまたは -std の後に配置 | HOWTO/buildfile-compile-options.md |
| ターゲット固有のリストに += と = のどちらを選ぶか | HOWTO/buildfile-compile-options.md |
| CMake プロジェクトを build2 ビルドファイルに移植 | HOWTO/migrate-from-cmake.md |
| ビルドグラフを構成に依存しない状態に保つ | HOWTO/config-independent-build-graph.md |
| C/C++ コンパイルとリンクオプション、モジュールサポート | guides/build2-modules-cxx.md |
| C 共通変数、DLL エクスポート、コンパイルデータベース、コンパイラクラス vs. ID | guides/build2-modules-cc.md |
| bin/liba/libs/exe ターゲットタイプ | guides/build2-modules-bin.md |
| アップストリーム共有ライブラリ名または SONAME に一致させる | HOWTO/match-upstream-library-name.md |
| ヘッダーのみ(binless)ライブラリを作成 | HOWTO/header-only-library.md |
| pthread をリンク | HOWTO/link-pthread.md |
| システムライブラリをリンク (-lm, -ldl, advapi32.lib) | HOWTO/link-system-library.md |
| Windows .rc リソース (VERSIONINFO) を DLL に埋め込む | HOWTO/windows-resource-file.md |
| リンクターゲットでソースをライブラリの前に並べる | HOWTO/link-prerequisite-order.md |
| ライブラリコンポーネントをオプションにする | HOWTO/optional-library-components.md |
| 自動生成された C/C++ ヘッダーを使用 | HOWTO/generated-headers.md |
| main() を提供するライブラリを作成 | HOWTO/library-provides-main.md |
| プラットフォームごとに共有ライブラリバリアントを無効化 | HOWTO/disable-shared-lib-per-platform.md |
| 実行可能ファイルまたはライブラリからメタデータをエクスポート | HOWTO/target-metadata.md |
| 実際のプレフィックスに対してインストールされた import! をローカルでテスト | HOWTO/local-installed-import.md |
| パッケージの追加/削除、バージョン競合の解決 | bpkg/README.md |
| パッケージのビルド、アップグレード、パッチ適用 | bpkg/bpkg-pkg-build.md |
| bpkg 構成の作成(スタンドアロン、bdep プロジェクトなし) | bpkg/bpkg-cfg-create.md |
| 構成を作成し、その中で bdep プロジェクトを初期化 | bdep/bdep-init.md |
| 既存の構成内でプロジェクトを初期化 | bdep/bdep-init.md |
| マニフェスト/ロックファイルを構成と同期 | bdep/bdep-sync.md |
| 新しいプロジェクトを作成 | bdep/bdep-new.md |
bdep new のオプションの組み合わせが何を作成するか確認 | bdep/bdep-new-layouts.md |
| パッケージを公開 | bdep/bdep-publish.md |
| 新しいバージョンをリリース | bdep/bdep-release.md |
| テストスクリプトを作成 | guides/testscript-summary.md |
| テストスクリプトコマンド、リダイレクション、正規表現、クリーンアップ、組み込み関数 | guides/testscript-commands.md |
| Testscript で誤動作するテストをサニタイズ | HOWTO/sanitize-tests.md |
| テストで assert() を正しく使用 | HOWTO/assert-in-tests.md |
| 追加の依存関係があるテスト(別のテストパッケージ) | HOWTO/tests-extra-dependencies.md |
| lib-tests/examples/benchmarks の概要または PACKAGE-README を作成 | HOWTO/tests-extra-dependencies.md |
| テストまたはインストールに必要なものだけをビルド | HOWTO/update-for-test-install.md |
| ランタイムテストフィクスチャを配線(子ヘルパー、ソースツリーデータ) | HOWTO/test-runtime-fixtures.md |
| テストにソースツリーデータディレクトリへのアクセスを許可 | HOWTO/test-runtime-fixtures.md |
| b dist アーカイブからテストフィクスチャ/リソースを除外 | HOWTO/exclude-test-data-from-dist.md |
インポートされた実行可能ファイルをテストスクリプトでテスト(例:パッケージ自身の exe{} を tests/ から) | HOWTO/test-imported-executable.md |
| 「すでに更新済みだが [インストール対象ではない]」競合を解決 | HOWTO/for-install-conflicts.md |
| サードパーティライブラリをパッケージング | guides/packaging-guide-summary.md |
| cppget.org のエンドツーエンドパッケージングワークフローを実行 | skills/build2-package/SKILL.md |
| 公開前のローカルパッケージング健全性チェックを実行 | skills/build2-review/SKILL.md |
| サードパーティパッケージ、プロジェクト、リポジトリに名前を付ける | HOWTO/package-naming.md |
| レビューブランチでサードパーティパッケージを開始 | guides/packaging-guide-summary.md |
depends 句からの依存関係機能を要求 | HOWTO/require-dependency-feature.md |
| pkg リポジトリと git リポジトリが依存関係をどのように見つけるか | guides/packaging-guide-summary.md |
| サードパーティパッケージをテストして公開 | guides/packaging-guide-testing.md |
| サードパーティパッケージの提出をレビュー | guides/packaging-guide-review.md |
| パッケージングバージョン管理(新しいリビジョン、新しいバージョン) | guides/packaging-guide-version-management.md |
| パッケージングアンチパターン、すべきでないこと | guides/packaging-guide-antipatterns.md |
| サードパーティプロジェクトのパッケージング時にプライベートヘッダーを処理 | HOWTO/third-party-private-headers.md |
| man ページをインストール(セクション 1 以外) | HOWTO/man-pages-install.md |
| 非標準名のアップストリームチェンジログをパッケージング | HOWTO/package-changes-file.md |
| bpkg パッケージ名ルール、バージョン形式、制約構文 | guides/bpkg-package-name-version.md |
| マニフェストでパッケージライセンスを表現(SPDX, other:, 複数ライセンス) | guides/packaging-license.md |
| ツールチェーンをインストールまたはブートストラップ | guides/install-bootstrap.md |
| リポジトリからツールチェーンをインストール(ステップ 3) | guides/install-toolchain.md |
| インストール済みツールチェーンをアップグレード(dirty または staged) | guides/install-upgrade.md |
| .in テンプレートプリプロセッシングまたは bash モジュールを使用 | guides/build2-modules-misc.md |
| version モジュール: 変数、スナップショットバージョン、バージョンヘッダー | guides/build2-module-version.md |
| config.h.in / config.h.cmake / config.h.meson を処理 | guides/build2-modules-autoconf.md |
| プロジェクト固有の autoconf チェックを追加 | guides/build2-autoconf-project-checks.md |
| autoconf 組み込みカタログにチェックを貢献 | guides/build2-autoconf-contributing-checks.md |
| ビルドファイルで autoconf チェック結果を使用 | guides/build2-autoconf-buildfile.md |
| kconfig: Kconfig 言語リファレンス(設定エントリ、依存関係、メニュー、選択肢) | guides/kconfig-summary.md |
| kconfig: ビルドシステム統合と例 | guides/kconfig-integration.md |
| kconfig: ヘルパーオプション、非対話型/ランダム構成レシピ | guides/kconfig-patterns.md |
| カスタム build2 モジュールを作成(ルール、init、boot) | guides/build2-module-hello.md |
| build2 モジュール API を理解(エントリポイント、module_functions) | guides/build2-module-hello.md |
| ブートストラップフェーズの build2 モジュールを開発 | guides/build2-module-hello.md |
| カスタム build2 ルールを作成(match、apply、recipe、register) | HOWTO/write-build2-rule.md |
| build2 モジュール開発環境をセットアップ | guides/build2-module-dev-setup.md |
| モジュール開発のためにホスト/ターゲットビルド構成を分割 | guides/build2-module-dev-setup.md |
| 他のプロジェクトで dev バージョンのモジュールを使用 | guides/build2-module-dev-setup.md |
| ターゲットトリプレットを使用したクロスコンパイルをセットアップ | HOWTO/cross-compilation.md |
| debug/release/sanitize 構成を管理 | HOWTO/multiple-configurations.md |
| build2 プロジェクトの CI/CD パイプラインをセットアップ | HOWTO/ci-cd-setup.md |
| 特定のプラットフォーム向けに自動 CI ビルドをフィルタリング | HOWTO/builds-ci-filtering.md |
| build-include/build-exclude パターンがボット名に一致するかどうかをトレース | HOWTO/builds-ci-filtering.md |
| cppget.org の CI 結果を読み取る(test-installed バッジ) | HOWTO/ci-results.md |
| 特定の CI ボットでシステム提供のライブラリを要求 | HOWTO/sys-build-config.md |
| ツールチェーン開発用に build2 をセットアップ | HOWTO/toolchain-dev-setup.md |
| 新しい bpkg パッケージディレクトリをスキャフォールド | scripts/new-package.sh |
| .bx スクリプトまたは名前付きタスクを実行 | bx/bx.md |
| .bx スクリプトを始める(実践的なチュートリアル) | HOWTO/bx-script.md |
| ツールチェーンがインストールされていることを確認 | scripts/verify-install.sh |
| config.cxx= 用の C++ コンパイラを見つける | scripts/probe-compiler.sh |
| パッケージマニフェストファイルを検証 | scripts/check-manifest.sh |
| bpkg 構成でテストを実行 | scripts/run-tests.sh |
| プロジェクト名/バージョン/ルートを検査 | scripts/show-project-info.sh |
| ドキュメント内の壊れたリンクをチェック | scripts/check-links.sh |
| brep パッケージリポジトリウェブインターフェースをデプロイ | brep/README.md |
| リポジトリデータを brep にロード | brep/brep-load.md |
| brep で古いビルドを期限切れにするかテナントをアーカイブ | brep/brep-clean.md |
| brep データベースをセットアップまたは移行 | brep/brep-migrate.md |
| 遅延のために brep ビルドインフラストラクチャを監視 | brep/brep-monitor.md |
| バイナリ配布アップロードディレクトリをクリーンアップ | brep/brep-upload-bindist-clean.md |
| パッケージ提出または CI ハンドラを実装 | brep/brep-request-handling.md |
| brep パッケージ提出プロトコルを理解 | brep/brep-request-handling.md |
| brep CI 要求プロトコルを理解 | brep/brep-request-handling.md |
| エラーのトラブルシューティング | HOWTO/troubleshooting.md |
| トピック別の実践的なレシピ | HOWTO/README.md |
| 用語リファレンス | GLOSSARY.md |
ツールのクイック概要
| バイナリ | 役割 | ロードするタイミング |
|---|---|---|
b | ビルドシステム | ビルドファイルの作成、ビルドルールの理解、b コマンドの実行時 |
bpkg | パッケージマネージャ | パッケージの依存関係管理、パッケージのビルド、構成の作成時 |
bdep | プロジェクト依存関係マネージャ | プロジェクトの初期化、公開、バージョンリリース、マニフェストの同期時 |
bx | タスクランナー | 名前付きタスクやスクリプトの実行、カスタムワークフローの自動化時 |
brep | リポジトリウェブインターフェース | パッケージリポジトリのデプロイ、管理、監視時 |