最近,我在公司工作了一大堆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
最佳答案
不幸的是,有一些方法可以为Java rules创建本机提供程序,但尚未为C ++规则创建本机提供程序。这项工作正在进行中。目前,最好的方法是使用宏来包装您的自定义规则,并将各种文件添加到cc_.*
规则中。
关于python - Bazel传递结构约定,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45107786/