zx_* 包裝函式已淘汰

目標和動力

Fuchsia 的建構系統一直包含一個 內部建構系統,用來 程式碼子集,我們稱之為 Zircon。這包括 Zircon 核心和相關程式庫,以及在特定時間點執行的程式碼 組織或技術上的人員 在核心上投入了大量心力

所有建構定義都已遷移至單一系統 建構定義仍沿用先前的系統。 特別要注意的是,建構範本中仍有兩個舊版包裝函式:

  • zx_library()
  • zx_host_tool()

這些範本會使用一些額外的邏輯包裝其他常見的建構範本 旨在強制執行 C++ 程式碼與標頭的 Zircon。隨著時間的推移,他們已發展出其他邏輯,例如發布內容 只有其他範本可以完成這項作業,因此 且可能會令人困惑最後,一些最常見的用途 可透過標準 GN 目標類型達成 。

技術背景

建議在處理BUILD.gn檔案方面有一般經驗,但不建議這麼做 完全不需要。 請參閱 GN 參考指南。

如何提供協助

選取工作

首先,在建構檔案中尋找 zx_libraryzx_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_setstatic_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敬上 列出經過清理的目錄

使用一般程序將變更項目送審。

範例

贊助者

如有問題或想掌握最新狀態,請與我們聯絡: