目標和動力
Fuchsia 的建構系統一直包含一個 內部建構系統,用來 程式碼子集,我們稱之為 Zircon。這包括 Zircon 核心和相關程式庫,以及在特定時間點執行的程式碼 組織或技術上的人員 在核心上投入了大量心力
所有建構定義都已遷移至單一系統 建構定義仍沿用先前的系統。 特別要注意的是,建構範本中仍有兩個舊版包裝函式:
zx_library()
zx_host_tool()
這些範本會使用一些額外的邏輯包裝其他常見的建構範本 旨在強制執行 C++ 程式碼與標頭的 Zircon。隨著時間的推移,他們已發展出其他邏輯,例如發布內容 只有其他範本可以完成這項作業,因此 且可能會令人困惑最後,一些最常見的用途 可透過標準 GN 目標類型達成 。
技術背景
建議在處理BUILD.gn
檔案方面有一般經驗,但不建議這麼做
完全不需要。
請參閱 GN 參考指南。
如何提供協助
選取工作
首先,在建構檔案中尋找 zx_library
或 zx_host_tool
的執行個體。
zx_library("foo") {
...
}
另一種做法是
仍然使用舊的範本,無論是直接或間接透過
另一個包裝函式。您可以在
//build/BUILD.gn
。
「"deprecated_zx_wrapper_allowlist"
」群組底下。
執行工作
使用其他範本,重新編寫使用 zx_*
包裝函式的目標。
將 zx_library
替換為下列任一項:
source_set
sdk_source_set
static_library
sdk_static_library
shared_library
sdk_shared_library
盡可能使用建構內目標類型
通常 zx_library
可以替換為 source_set
或 static_library
。
尤其是無法連結至核心的程式碼
zx_host_tool
通常可以替換為內建的 executable
規則,使用
。
executable("my-host-tool") {
sources = [
"main.cc",
...
]
...
}
# To build as a host tool, append the string "($host_toolchain)" to the
# dependency
group(...) {
deps = [
":my-host-tool($host_toolchain)",
...
]
}
如果是在 SDK 中使用這項工具,則可能也需要定義 sdk_atom
目標。便利包裝函式
為此,請造訪 //build/sdk/sdk_host_tool.gni
。
定義公開標頭
zx_library
範本提供實用且便利的邏輯,方便您定義
C/C++ 標頭以依其相依項目開放大眾使用。這個邏輯也
針對 C/C++ include 宣傳一致的來源版面配置。
您現在可以使用專屬範本完成相同的操作。設定前 定義下列項目:
import("//build/unification/zx_library.gni")
zx_library("foo_headers") {
sdk = "source"
sources = []
sdk_headers = [ "foo.h" ]
}
source_set("foo_client") {
sources = [ "foo.cc" ]
deps = [ ":foo_headers" ]
}
而是應定義以下項目:
import("//build/cpp/library_headers.gni")
library_headers("foo_headers") {
headers = [ "foo.h" ]
}
source_set("foo_client") {
sources = [ "foo.cc" ]
public_deps = [ ":foo_headers" ]
}
另請參閱: 474231:[建構] 新增 library_headers() 範本。
完成工作
準備變更時,請務必將
//build/BUILD.gn
敬上
列出經過清理的目錄
使用一般程序將變更項目送審。
範例
贊助者
如有問題或想掌握最新狀態,請與我們聯絡: