首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bazel中的`cc_proto_library`实现在哪里?

bazel中的`cc_proto_library`实现在哪里?
EN

Stack Overflow用户
提问于 2022-07-06 01:48:19
回答 1查看 174关注 0票数 0

我阅读了巴泽尔的源代码,并在src/main/starlark/builtins_bzl/common/cc中找到了cc_binarycc_library

我还在src/main/starlark/builtins_bzl/common/proto中找到了src/main/starlark/builtins_bzl/common/proto。但我找不到cc_proto_library的实现在哪里。

有人能告诉我它是怎么工作的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-06 12:28:11

提示:使用https://source.bazel.build的Bazel导航其源代码。

您可以使用如下查询快速找到任何内置规则的实现:

代码语言:javascript
复制
language:java "implements RuleDefinition" "\"cc_proto_library\")"

这将使您了解CcProtoLibraryRule.java定义:

代码语言:javascript
复制
public class CcProtoLibraryRule implements RuleDefinition {

  private final CcProtoAspect ccProtoAspect;

  public CcProtoLibraryRule(CcProtoAspect ccProtoAspect) {
    this.ccProtoAspect = ccProtoAspect;
  }

  @Override
  public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment environment) {
    return builder
        .requiresConfigurationFragments(CppConfiguration.class)
        /* <!-- #BLAZE_RULE(cc_proto_library).ATTRIBUTE(deps) -->
        The list of <a href="protocol-buffer.html#proto_library"><code>proto_library</code></a>
        rules to generate C++ code for.
        <!-- #END_BLAZE_RULE.ATTRIBUTE --> */
        .override(
            attr("deps", LABEL_LIST)
                .allowedRuleClasses("proto_library")
                .allowedFileTypes()
                .aspect(ccProtoAspect))
        .build();
  }

  @Override
  public Metadata getMetadata() {
    return RuleDefinition.Metadata.builder()
        .name("cc_proto_library")
        .factoryClass(CcProtoLibrary.class)
        .ancestors(BaseRuleClasses.NativeActionCreatingRule.class)
        .build();
  }
}

实现是用.factoryClass(CcProtoLibrary.class)定义的。

对于问题的第二部分,"builtins“是一个Bazel内部概念,可以透明地将Bazel规则的Java实现替换为其Starlark等效的Java实现,而无需在构建文件中添加任何load语句。这对于将现有用户迁移到Starlark实现而不造成用户影响是必要的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72877119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档