Bazel 簡介

回報問題 查看原始碼 Nightly · 8.0 . 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Bazel 是開放原始碼的建構和測試工具,類似 Make、Maven 和 Gradle。它使用人類可讀的高階建構語言。Bazel 支援多種語言的專案,並為多個平台建構輸出內容。Bazel 支援跨多個存放區的大型程式碼庫,以及大量使用者。

優點

Bazel 具備下列優點:

  • 高階建構語言。Bazel 會使用抽象且人類可讀的語言,以高語意層級描述專案的建構屬性。與其他工具不同的是,Bazel 會根據程式庫、二進位檔、指令碼和資料集的概念運作,讓您不必撰寫對編譯器和連結器等工具的個別呼叫,避免複雜的情況。

  • Bazel 速度快且穩定可靠。Bazel 會快取先前完成的所有工作,並追蹤檔案內容和建構指令的變更。如此一來,Bazel 就會知道何時需要重建某項項目,並只重建該項目。如要進一步加快建構作業,您可以設定專案以高度平行和漸進的方式進行建構。

  • Bazel 是多平台工具。Bazel 可在 Linux、macOS 和 Windows 上執行。Bazel 可從同一專案為多個平台 (包括電腦、伺服器和行動裝置) 建構二進位檔和可部署的套件。

  • Bazel 可擴充規模。Bazel 可靈活處理含有 10 萬個以上來源檔案的建構作業。它可與多個存放區和數萬個使用者群組搭配使用。

  • Bazel 可擴充。支援許多語言,您可以擴充 Bazel 以支援任何其他語言或架構。

使用 Bazel

如要使用 Bazel 建構或測試專案,通常會執行下列操作:

  1. 設定 Bazel。下載並安裝 Bazel

  2. 設定專案工作區,這是 Bazel 用來尋找建構輸入內容和 BUILD 檔案,以及儲存建構輸出內容的目錄。

  3. 撰寫 BUILD 檔案,告訴 Bazel 要建構什麼內容,以及如何建構。

    您可以使用 Starlark 這門網域專屬語言,宣告建構目標來編寫 BUILD 檔案。(請參閱這裡的範例)。

    建構目標會指定 Bazel 將建構的一組輸入構件,以及其依附元件、Bazel 用來建構的建構規則,以及用於設定建構規則的選項。

    建構規則會指定 Bazel 將使用的建構工具 (例如編譯器和連結器) 及其設定。Bazel 提供多項建構規則,涵蓋支援平台上支援語言中最常見的構件類型。

  4. 透過指令列執行 Bazel。Bazel 會將輸出內容放置在工作區中。

除了建構作業外,您也可以使用 Bazel 執行測試,並查詢建構作業,以追蹤程式碼中的依附元件。

Bazel 建構程序

執行建構或測試時,Bazel 會執行以下操作:

  1. 載入與目標相關的 BUILD 檔案。

  2. 分析輸入內容及其依附元件,套用指定的建構規則,並產生動作圖表。

  3. 執行輸入內容的建構動作,直到產生最終建構輸出內容為止。

由於所有先前的建構工作都會快取,Bazel 可以識別並重複使用快取的構件,並只重建或重新測試已變更的項目。如要進一步確保正確性,您可以設定 Bazel 透過沙箱密封執行建構和測試,盡可能減少偏差並提高可重現性

動作圖

動作圖表代表建構構件、構件之間的關係,以及 Bazel 將執行的建構動作。有了這張圖表,Bazel 就能追蹤檔案內容變更,以及建構或測試指令等動作的變更,並瞭解先前執行過哪些建構作業。您也可以透過這張圖表,輕鬆追蹤程式碼中的依附元件

入門教學課程

如要開始使用 Bazel,請參閱「入門」或直接前往 Bazel 教學課程: