最近,我在公司工作了一大堆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/

10-12 22:51