我最近在公司制定了一大堆bazel规则,并创建了一些特定于我公司的自定义规则。我注意到的一件事是,在创建规则时,我经常使用自定义设计的传递数据传播,以帮助我的规则完成工作。这就是我的意思:
attrs = {
'deps': attr.label_list(
providers=[
'transitive_srcs',
'transitive_gens',
'transitive_data',
'transitive_reqs',
'transitive_deps',
'transitive_builds'
],
allow_files=False
)
}
这最终导致它与其他标准bazel规则产生不兼容。如果我的规则取决于cc_binary()
,那么期望cc_binary()
发送额外的传递数据。关于我们应该如何建立规则是否有任何约定?我很乐意跟随一些或创建一些,以便更容易分享规则。
这是我从中获取代码示例的地方。 https://github.com/findmine/bazel-pex-rule
答案 0 :(得分:1)
有可能为Java rules创建本机提供程序,但遗憾的是还没有为C ++规则创建。这项工作正在进行中。目前,最好的方法是让宏包装自定义规则并在cc_.*
规则中添加各种文件。