使用 GN 建置 V8

V8 是在 GN 的協助下建置的。GN 是一種元建置系統,它會為許多其他建置系統產生建置檔案。因此,建置方式取決於您使用的「後端」建置系統和編譯器。
以下說明假設您已 簽出 V8,而且您已 安裝建置相依性

您可以在 Chromium 文件GN 自有的文件 中找到有關 GN 的更多資訊。

從原始碼建置 V8 包含三個步驟

  1. 產生建置檔案
  2. 編譯
  3. 執行測試

建置 V8 有兩種工作流程

使用 gm 建置 V8(便利工作流程) #

gm 是便利的多合一腳本,它會產生建置檔案、觸發建置,並選擇性地執行測試。它可以在 V8 簽出的 tools/dev/gm.py 中找到。我們建議在您的 shell 設定中加入別名

alias gm=/path/to/v8/tools/dev/gm.py

然後,您可以使用 gm 為已知設定建置 V8,例如 x64.release

gm x64.release

若要在建置後立即執行測試,請執行

gm x64.release.check

gm 會輸出它執行的所有指令,讓您在必要時輕鬆追蹤和重新執行它們。

gm 可讓您使用單一指令建置必要的二進位檔和執行特定測試

gm x64.debug mjsunit/foo cctest/test-bar/*

建置 V8:原始手動工作流程 #

步驟 1:產生建置檔案 #

有數種產生建置檔案的方法

  1. 原始手動工作流程包括直接使用 gn
  2. 稱為 v8gen 的輔助腳本簡化了常見設定的流程。

使用 gn 產生建置檔案 #

使用 gn 為目錄 out/foo 產生建置檔案

gn args out/foo

這會開啟一個編輯器視窗,用於指定 gn 參數。或者,您可以在命令列上傳遞參數

gn gen out/foo --args='is_debug=false target_cpu="x64" v8_target_cpu="arm64" use_goma=true'

這會產生建置檔案,以使用 goma 編譯模式在發布模式下使用 arm64 模擬器編譯 V8。

如要查看所有可用的 gn 參數概觀,請執行

gn args out/foo --list

使用 v8gen 產生建置檔案 #

V8 儲存庫包含一個 v8gen 便利指令碼,可更輕鬆地為常見設定產生建置檔案。我們建議在您的 shell 設定中新增一個別名

alias v8gen=/path/to/v8/tools/dev/v8gen.py

呼叫 v8gen --help 以取得更多資訊。

列出可用的設定(或主控端的機器人)

v8gen list
v8gen list -m client.v8

在資料夾 foo 中像 client.v8 瀑布中的特定機器人一樣建置

v8gen -b 'V8 Linux64 - debug builder' -m client.v8 foo

步驟 2:編譯 V8 #

如要建置所有 V8(假設 gn 已產生到 x64.release 資料夾),請執行

ninja -C out/x64.release

如要建置特定目標(例如 d8),請將它們附加到命令

ninja -C out/x64.release d8

步驟 3:執行測試 #

您可以將輸出目錄傳遞給測試驅動程式。其他相關旗標會從建置中推斷出來

tools/run-tests.py --outdir out/foo

您也可以測試您最近編譯的建置(在 out.gn 中)

tools/run-tests.py --gn

建置問題?在 v8.dev/bug 提交錯誤,或在 v8-users@googlegroups.com 上尋求協助。