package() 迁移

目标和动力

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

新志愿者?请将您自己添加到列表中!

示例

赞助商

如有疑问或需要更新状态,欢迎与我们联系: