美文网首页
Bazel-使用自定义feature控制

Bazel-使用自定义feature控制

作者: 西博尔 | 来源:发表于2021-04-22 12:26 被阅读0次

    需求背景:

    1.我们知道可以通过定义config_setting和select的方式 ,增加控制流,但是只能对现有(objc_library,swift_library等)的原有属性增加选择
    2.如果想增加一个原来没有的参数控制编译过程怎么办?只能魔改官方rules, 增加属性,通过属性的值来判断
    3.比如增加一个针对资源图片的 warning_as_error, 就需要新增一个属性来控制后续的编译过程
    4.有没有更高效的方式???


    feature 功能 , 我们可以通过魔改官方的rules来实现

    官方的示例:

    https://github.com/bazelbuild/examples/blob/master/rules/features/rule.bzl
    https://github.com/bazelbuild/examples/blob/master/rules/features/BUILD

    1.官方给出的使用方式是在BUILD rules声明中,直接给出feature的内容
    2.还可以在.bazelrc中 build --features=resource_warning_as_error
    3.这样在rules实现中, 就可以通过ctx.features拿到features数组 , 在数组中判断是否存在我们在外部添加的feature

    例:
    .bazelrc

    build --features=resource_warning_as_error
    

    resources.bzl

    自己定义了个参数resource_war_as_err ,通过判断是否在ctx.features中存在字符串"resource_war_as_err" 来赋值Fales或者True
                processing_args = {
                    "actions": actions,
                    "bundle_id": bundle_id,
                    "executables": rule_executables,
                    "files": files,
                    "parent_dir": parent_dir,
                    "platform_prerequisites": platform_prerequisites,
                    "product_type": rule_descriptor.product_type,
                    "rule_label": rule_label,
                    "resource_war_as_err":"resource_warning_as_error" in ctx.features,
                }
    

    相关文章

      网友评论

          本文标题:Bazel-使用自定义feature控制

          本文链接:https://www.haomeiwen.com/subject/oibxrltx.html