gpt4 book ai didi

bazel - 获取给定 bazel 目标的特定属性的值

转载 作者:行者123 更新时间:2023-12-05 01:16:56 27 4
gpt4 key购买 nike

我确信这已记录在某处,但无法在任何地方找到答案。

如果我有:

```bazel_rule(
name = "foo",
srcs = ["foo.cpp"],
attr_bar = "bar"
)```

如果我在 Starlark (.bzl) 文件中引用了此规则 (//src:foo),我如何查询目标以获取特定属性的值。例如get_attribute("//src:foo", "attr_bar") 在这个例子中应该返回 "bar"。

最佳答案

这取决于您是否尝试从 macro 中读取属性, 一个 rule , 或 aspect .

简短回答:

宏无法读取目标的属性(粗略地说,宏是在构建文件加载时评估的,而属性是在分析时稍后评估的)。您可以做一些事情,例如获取您关心的属性并在宏中创建规则(在您的示例中为 bazel_rule),以便宏具有属性值,但这通常很快就会变得困惑且难以遵循。

Starlark 规则也不能直接从依赖项中读取属性值(当然,它可以读取自己的属性)。您感兴趣的规则(此处为 bazel_rule)必须将信息放在 provider 中。 Starlark 规则从其依赖项中读取提供程序。

方面可以通过ctx.rule.attr.<attr_name> 直接读取正在评估的规则的属性。 (the example here 这样做)。

关于bazel - 获取给定 bazel 目标的特定属性的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52281334/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com