2.Dart SDK 构建脚本
Dart SDK 由 tools/build.py
触发编译,它的功能为调用GN(Generate Ninja)和Ninja来构建Dart SDK。它支持多种配置选项,如目标操作系统、构建模式、架构和sanitizer等。
整体流程:
- 解析命令行参数
- 配置构建环境
- 运行GN生成Ninja构建文件
- 执行Ninja构建
- 支持RBE(Remote Build Execution)和Goma分布式编译
- 提供构建完成通知
关键函数:
BuildOptions()
: 设置命令行参数解析器BuildOneConfig()
: 为特定配置生成构建命令RunOneBuildCommand()
: 执行单个构建命令Build()
: 协调多个配置的构建过程Main()
: 脚本的主入口点
BuildOptions 命令行参数
BuildOptions 定义了 tools/build.py
命令行参数:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
-j | int | 4 | Ninja -j 选项,用于 Goma/RBE 构建 |
-l | int | 1 | Ninja -l 选项,用于 Goma/RBE 构建 |
--no-start-goma | bool | False | 不尝试启动 goma |
--no-start-rbe | bool | False | 不尝试启动 rbe |
--check-clean | bool | False | 检查 Ninja 的第二次调用是否没有任何操作 |
build_targets | list | [] | 构建目标列表 |
请注意:
--no-start-goma
参数实际上被设置为no_start_rbe
目标变量。这可能是一个遗留问题或特意的设计。build_targets
是一个位置参数,可以接受多个值。- 还有一些参数是通过
gn_py
模块的函数添加的,它们被分为"Configuration Related Arguments"、"GN Related Arguments"和"Other Arguments"三组
Example
编译 Dart SDK:
./tools/build.py --no-goma --mode release --arch x64 create_sdk
编译 runtime:
./tools/build.py --no-goma --mode release --arch x64 runtime
Targets
./tools/build.py
都能构建哪些 targets 呢?可全局搜索 gn 文件中的 group("
。
本文作者:Maeiee
本文链接:2.Dart SDK 构建脚本
版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!
喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!