fx build
現在可以直接建構 GN 目標。方法很簡單,只要使用一或多個
GN 目標標籤,且指令列上有 //
前置字串,如下所示:
# Build the `cstr` and `uuid` libraries for Fuchsia.
fx build //src/lib/cstr //src/lib/uuid
# Equivalent to the previous command.
fx build //src/lib/cstr:cstr //src/lib/uuid:uuid
如果標籤不屬於設定的 GN 圖表的一部分,系統會顯示錯誤訊息。平均
如果已在對應的 BUILD.gn
檔案中定義,則仍必須是
來自 //:default
或其他定義的依附元件清單的遞移依附元件
位於 args.gn
(例如 universe_package_labels
等) 中:
# Build the corresponding tests for Fuchsia too.
$ fx build //src/lib/cstr:tests
ERROR: Unknown GN label (not in the configured graph): //src/lib/cstr:tests
如要進一步瞭解發生這種情況的原因,請參閱 gn-root-targets。
GN 工具鍊後置字串
支援 GN 工具鍊後置字串 (但括號需要有殼層引用) 如:
# Build the host tests for the `cstr` library.
fx build '//src/lib/cstr:tests(//build/toolchain:host_x64)'
或:
# Same as above
fx build //src/lib/cstr:tests\(//build/toolchain:host_x64\)
GN 工具鍊別名
為了方便起見,您可以使用特定選項來附加 GN 工具鍊後置字串 設定 next 標籤,例如:
# Build the `cstr` and `fidl` tests for the host, and the `trace` library for Fuchsia.
fx build --host //src/lib/cstr:tests //src/lib/fidl:tests --fuchsia //src/lib/trace
別名工具鍊定義支援少數固定選項:
--host
與建構機器的主機工具鍊標籤相符 (例如//build/toolchain:host_x64
或//build/toolchain:host_arm64
)。--default
與目前版本的預設工具鍊相符 設定 (例如//build/toolchain/fuchsia:riscv64
)。由於 Fuchsia 二進位檔建構完成,
--fuchsia
是--default
的另一個名稱 保持預設的 GN 工具鍊 (目前)。--fidl
與//build/fidl:fidling
相符,也就是用於處理的 GN 工具鍊 FIDL 檔案。
為了方便起見,我們會陸續新增其他別名。
GN 工具鍊選項
--toolchain=LABEL
選項可用於特定 GN 工具鍊標籤:
# Build the `cstr` tests for Linux/arm64 through cross-compiling
fx build --toolchain=//build/toolchain:linux_arm64 //src/lib/cstr:tests
它也接受工具鍊別名,例如:
# Same as using `--host` directly as well.
fx build --toolchain=host //src/lib/cstr:tests
設為 Ninja 目標路徑的 GN 標籤
fx build
指令一律會輸出所需的 Ninja 目標清單
建構,如下所示:
$ fx build //src/lib/cstr
Building Ninja target(s): obj/src/lib/cstr/cstr.stamp
...
請注意,這份清單包含對應建構指令的所有輸出內容, 包括 GN 隱含產生的值。建構其中任何項目都會觸發 可一次產生所有輸出內容的指令
$ fx build //src/lib/json_parser
Building Ninja target(s): obj/src/lib/json_parser/json_parser.inputdeps.stamp obj/src/lib/json_parser/json_parser.json_parser.cc.o obj/src/lib/json_parser/json_parser.rapidjson_validation.cc.o obj/src/lib/json_parser/json_parser.stamp
...
Ninja 鎖定至 GN 標籤
系統仍支援傳送 Ninja 目標路徑,但會輸出警告 提供最適合的建構引數,例如:
$ fx build host_x64/zbi host_x64/ffx
WARNING: Use '--host //zircon/tools/zbi' instead of Ninja path 'host_x64/zbi'
WARNING: Use '--host //src/developer/ffx/frontends/ffx:ffx_bin' instead of Ninja path 'host_x64/ffx'
Building Ninja target(s): host_x64/exe.unstripped/zbi host_x64/ffx host_x64/obj/src/developer/ffx/frontends/ffx/ffx_bin.stamp host_x64/obj/zircon/tools/zbi/zbi.zbi.cc.o host_x64/zbi host_x64/zbi.build-id.stamp
...
如果不想看到這個標籤,請傳送 --
選項後方的 Ninja 路徑
分隔符,因為其後方的所有內容都會直接傳遞至 Ninja:
fx build -- host_x64/zbi host_x64/ffx
不過,由於 Bazel 遷移作業執行,因此這種做法 Bazel 日後產生的輸出內容。