Bazel は、必要なコンパイラとテストを実行してプロジェクトをビルドします。 ビルド システムは、非常に大規模なプロジェクトや複数のプログラミング言語のコードを含むプロジェクトなど、広範なテストが必要で、複数のプラットフォーム向けに構築されている Google プロジェクトを最適に構築できるようにゼロから設計されています。 Java、C++、Objective-C、Python、Rust、Go、その他多くの言語でのコードの構築とテスト、および Android および iOS 用のモバイル アプリケーションの構築をサポートしています。 さまざまなプラットフォームやアーキテクチャでの単一のアセンブリ ファイルの使用がサポートされており、たとえば、XNUMX つのアセンブリ ファイルを変更せずにサーバー システムとモバイル デバイスの両方で使用できます。
Bazel の際立った特長の XNUMX つは、組み立てプロセスの高速性、信頼性、再現性です。 高いビルド速度を実現するために、Bazel はビルド プロセスにキャッシュと並列化技術を積極的に使用します。 BUILD ファイルでは、すべての依存関係を完全に定義する必要があります。これに基づいて、変更が行われた後にコンポーネントを再構築し (変更されたファイルのみが再構築されます)、アセンブリ プロセスを並列化するかどうかが決定されます。 工具はまた、再現可能なアセンブリを保証します。 開発者のマシンでプロジェクトをビルドした結果は、継続的統合サーバーなどのサードパーティ システムでのビルドと完全に同じになります。
Make や Ninja とは異なり、Bazel はアセンブリ ルールの構築に高レベルのアプローチを使用します。つまり、ビルドされるファイルへのコマンドのバインドを定義する代わりに、より抽象的な既製のブロックが使用されます。 「C++」、「C++ でのライブラリの構築」、「C++ のテストの実行」、およびターゲットとビルド プラットフォームの特定。 BUILD テキスト ファイルでは、プロジェクト コンポーネントはライブラリ、実行可能ファイル、テストの束として記述されますが、個々のファイルやコンパイラ呼び出しコマンドのレベルでは詳しく説明されません。 追加機能は、拡張機能を接続するためのメカニズムを通じて実装されます。
出所: オープンネット.ru