Bazel 簡介

回報問題 查看來源

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 教學課程: