使用 GN 构建 V8
V8 在 GN 的帮助下构建。GN 是一种元构建系统,因为它为许多其他构建系统生成构建文件。因此,您的构建方式取决于您使用的“后端”构建系统和编译器。
以下说明假设您已经拥有 V8 的检出 并且您已经 安装了构建依赖项。
有关 GN 的更多信息,请参阅 Chromium 的文档 或 GN 自身的文档。
从源代码构建 V8 包括三个步骤
- 生成构建文件
- 编译
- 运行测试
有两种构建 V8 的工作流程
- 使用名为
gm
的辅助脚本的便捷工作流程,它很好地将所有三个步骤组合在一起 - 原始工作流程,您在较低级别手动为每个步骤运行单独的命令
使用 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:生成构建文件 #
有几种方法可以生成构建文件
- 原始的手动工作流程涉及直接使用
gn
。 - 名为
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
像 client.v8
水瀑布中的特定机器人一样在文件夹 foo
中构建
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 上提交错误或在 [email protected] 上寻求帮助。