指令列選項
核心指令列選項可以間接 (做為平台實作詳細資料) 新增至產品組件,也可以由開發人員直接新增,用於本機偵錯和測試。
在主機板或產品檔案中指定選項
產品和開發板只能透過產品組裝間接新增核心指令列選項:
在當地指定選項
如要進行本機開發,可以指定要附加至核心指令列的字串清單,做為組件開發人員覆寫的一部分。
這需要兩個步驟:
1. 定義組件覆寫目標
在 //local/BUILD.gn
或 //local/*
下的其他 BUILD.gn
檔案中,定義組件覆寫目標。
import("//build/assembly/developer_overrides.gni")
assembly_developer_overrides("custom_kernel_args") {
kernel = {
command_line_args = [ "foo" ]
}
}
每組覆寫只需要執行一次,之後即可在建構作業中,重複用於任何產品組件或 outdir。
下一步是告知 GN 要為產品使用哪個開發人員覆寫目標。
2a. 將該目標與「主要」產品組件搭配使用
對於「主要」產品組件 (在 fx set
指令中命名的組件),您可以使用下列指令,告知 GN 使用上述定義的產品組件目標:
fx set ... --assembly-override //local:custom_kernel_args
或者,您也可以執行 fx args
修改現有的 args.gn
檔案,並新增或修改程式行,如下所示:
product_assembly_overrides_label = "//local:custom_kernel_args"
2b. 「主要」組件以外的產品組件
對於「主要」產品組件以外的組件 (例如 zedboot 或復原組件),需要稍微詳細的機制。這項作業會使用以萬用字元為基礎的模式比對完成:
fx set ... --assembly-override '//build/images/zedboot/*=//local:custom_kernel_args'
或
fx set ... --assembly-override '//products/microfuchsia/*=//local:custom_kernel_args'
處理多個產品組裝時,直接在 args.gn
中指定這項資訊會比較容易:
product_assembly_overrides = [
{
# core products:
assembly = "//build/images/fuchsia/*"
overrides = "//local:custom_kernel_args"
},
{
assembly = "//build/images/zedboot/*"
overrides = "//local:zedboot_overrides"
},
{
assembly = "//products/microfuchsia/*"
overrides = "//local:zedboot_overrides"
}
]
請注意,使用 //vendor/*
板時,產品組裝目標也會位於 //vendor
存放區 (例如 //vendor/<foo>/products/minimal
)。