Bazel 使用的原始碼是以名為
與存放區工作區包含一組定義的存放區。資料來源
存放區中的檔案是以套件的巢狀結構整理,
每個套件都是包含一組相關來源檔案和
BUILD
檔案。BUILD
檔案會指定有哪些軟體輸出內容可以建構。
原始碼。
存放區
Bazel 建構作業使用的來源檔案會整理在「存放區」 (通常是
縮短為 repos)。存放區是一種目錄樹狀結構,界線標記檔案位於
是由這類邊界標記檔案可能是 MODULE.bazel
、REPO.bazel
或
在舊版情境下,WORKSPACE
或 WORKSPACE.bazel
目前執行 Bazel 指令的存放區稱為 main 存放區。其他 (外部) 存放區是由存放區規則定義。查看外部 依附元件總覽。
工作區
工作區是由所有 Bazel 指令從相同執行 主要存放區中。其中包含主要存放區,以及所有已定義外部 IP 位址的集合 來使用容器映像檔
請注意,以往「存放區」的概念和「工作區」已經 混淆;「workspace」一詞經常用來指稱 有時甚至會用作「存放區」的同義詞
套件
存放區中程式碼組織的主要單位是套件。A 罩杯 套件是相關檔案集合,以及檔案內容 以便產生輸出構件
套件定義為包含
BUILD
檔案,名稱為 BUILD
或 BUILD.bazel
。A 罩杯
套件包含其目錄中的所有檔案,以及其下的所有子目錄,
但不包含 BUILD
檔案的檔案根據這個定義,系統不會
檔案或目錄可能是兩個不同套件的一部分。
例如,下列目錄樹狀結構中有兩個套件:my/app
。
以及子套件 my/app/tests
請注意,my/app/data
並非套件,但
屬於 my/app
套件的目錄。
src/my/app/BUILD
src/my/app/app.cc
src/my/app/data/input.txt
src/my/app/tests/BUILD
src/my/app/tests/test.cc
目標
套件是 目標的容器,定義在套件的
BUILD
檔案。大部分目標都是以下兩種主體之一:檔案和規則。
檔案再分為兩類。來源檔案通常是由 以及登錄到存放區產生的檔案、 有時候稱為衍生檔案或輸出檔案,系統不會簽入,但 產生的輸出內容。
第二種目標是透過規則宣告。每個規則例項 會指定輸入組和一組輸出檔案之間的關係。 規則的輸入內容可能是來源檔案,但也可能是 不過,編寫這類演算法並不容易 因為我們無法寫出所有可能的規則
規則的輸入內容是來源檔案,還是由系統產生的檔案, 案件無形;重要的是該檔案的內容事實 讓您輕鬆將複雜的來源檔案換成 舉例來說,如果手動維持 都變得很累人,有人編寫程式來衍生出這個檔案 這個檔案的使用者無須進行任何變更。相反地 檔案應該很容易替換為只有本機變更的來源檔案。
規則的輸入可能也會包含其他規則。確切的意義 關係通常十分複雜且與語言或規則有關 使用起來相當簡單:C++ 程式庫規則 A 可能有另一個 C++ 程式庫 輸入規則 B這項依附元件的影響在於 B 的標頭檔案 A 會在編譯期間使用,而 A 的符號在 A 期間 而 A 的執行階段資料則會在執行期間提供給 A。
但其他規則的不同之處在於,由規則產生的檔案一律會隸屬於 與規則本身相同的套件您無法產生 另一個套件規則輸入內容不常見 套件
套件群組是一組套件的組合,目的是限制其可存取的
某些規則套件群組是由 package_group
函式定義。他們
有三個屬性:所含套件清單、名稱等等
封包群組您只能從
visibility
規則屬性或 default_visibility
屬性
package
函式;就不會產生或使用檔案如要
請參閱 package_group
說明文件。