目标和动力
2020 年,我们推出了新的构建模板,用于定义
组件及其测试新模板会更贴切地反映
项目的架构目标和方向。这些模板会替换来源中的旧模板
2016 年,主要是 package()
、test_package()
和 unittest_package()
。
新模板的一些优点包括:
- 减少重复,使用更简洁的语法。来自迁移经验 将旧目标定位到新模板,新定义跨度会减少 30%-50% 代码。
- 组件只需定义一次,即可在多个软件包中使用。对于 在生产定义中重复使用相同的组件 属于产品定义的包,而该包 其中包含您的组件与其他组件之间的集成测试。
- 由于组件和软件包可单独定义,因此构建系统 因为这样就知道哪些依赖项属于哪个组件 执行更复杂的构建时验证,检测错误 并提供更清晰的反馈。
- 原生支持更多用例,无需特殊语法。
例如,包含驱动程序、其他数据文件或
共享库不需要特殊语法 - 只需在 build 中添加
deps
这些目标定义了您希望组件使用的内容,或定义软件包使用的内容 包含。 - 可以更轻松地定义无需手动编写
组件清单(
.cml
文件)。 - 目前有更好的文档,涵盖更多语言和用例。
迁移到新模板可使我们的 build 定义更易于阅读
更加实用,并有助于消除与
仅在旧版 package()
模板的服务中保持活跃状态。请帮助我们
用新模板替换旧模板的所有用途,以便我们继续。
技术背景
请参阅有关构建组件的指南。
建议具备使用 BUILD.gn
文件的一般经验,但不建议这样做
但这完全是必要的
请参阅 GN 参考指南。
如何提供帮助
选择任务
建议您先查看
//build/BUILD.gn
位于群组“"deprecated_package"
”下。
查找您熟悉的目录,或随机选择一个目录。
在此目录的 BUILD.gn
文件中,您可能会看到带有
旧模板,例如:
package("foo") {
...
}
执行任务
在您选择的目录中,从BUILD.gn
模板 package()
、test_package()
或 unittest_package()
。请注意,
文件中可能使用了包含这些模板的其他模板。制造商
删除其中关联的代码行
//build/BUILD.gn
看到您仍然可以生成 build(运行 fx gen
并查看
表示 GN 已成功生成 Ninja 文件且未出现错误)。
完成任务
在准备更改时,请务必从
//build/BUILD.gn
列出您清理的目录
向包含 build 定义的目录的所有者发送代码审核, 或者是下列志愿者帮忙提供帮助的人 迁移:
- shayba@google.com
- xbhatnag@google.com
新志愿者?请将您自己添加到列表中!
示例
- 464409:[时间] 将所有软件包和测试迁移到新的 build 规则
- 464407:[build] 将 //src/sys/lib 中的测试迁移到新的 build 规则
- 464410:[build] 将 //src/sys 中的软件包迁移到新的 build 规则
- 473597:[会话] 将所有软件包和测试迁移到新的构建规则
赞助商
如有疑问或需要更新状态,欢迎与我们联系: