美文网首页
Bazel-Assets资源warning转error (二)

Bazel-Assets资源warning转error (二)

作者: 西博尔 | 来源:发表于2021-04-13 17:20 被阅读0次

    上一篇 讲的是修改了xctoolrunner来将Assets打包过程的warnings 转换成Error

    这一篇 讲如何在bazel build命令中加入控制项

    比如:

    bazel build  --define warning_as_err=yes //universal:bl_dump_binary
    
    官方提供的例子

    config_setting 配合 select

    Examples
    config_setting(
        name = "windows",
        values = {
            "crosstool_top": "//crosstools/windows",
        },
    )
    
    cc_binary(
        name = "multiplatform_app",
        ...
        linkopts = select({
            ":windows": [
                "-Wl,windows_support1.lib",
                "-Wl,windows_support2.lib",
            ],
            "//conditions:default": [],
        ...
    )
    
    

    bazel build //pkg:multiplatform_app --crosstool_top=//crosstools/windows .



    接下来就是在build_bazel_rules_apple中寻找了

    思路:

    所以 我也想在build_bazel_rules_apple中找到合适的位置, 加入config_setting和 select

    但是 失败了,即使加了config_setting 也没有合适的属性可以用于select接受我传递的值

    所以 只能想办法增加一个属性进去, 接收传递过来的值 ,用于后面判断是否可以 开启 warning_as_error的功能
    ios_rule.bzl
    ios_application = rule_factory.create_apple_bundling_rule(
        implementation = _ios_application_impl,
        platform_type = "ios",
        product_type = apple_product_type.application,
        doc = "Builds and bundles an iOS Application.",
    )
    
    并没有设置属性的位置, 尝试添加属性也会直接报错, 但是发现了create_apple_bundling_rule 基本可以得出ios_application的属性构造 是由工厂类,的create_apple_bundling_rule方法构造
    rule_factory.bzl

    在下列方法中加入 war_as_err 属性, 用于控制是否开启 warning 转 error

    def _get_ios_attrs(rule_descriptor):
           attrs.append({
                "war_as_err": attr.string(
                    doc = """
    The extension, without a leading dot, that will be used to name the bundle. If this attribute is not
    set, then the default extension is determined by the application's product_type111.
    """,
                ),
            })
    
    因为我们是给 ios_application添加的属性, 那么在我们的工程的BUILD中就可以直接修改
    BUILD
    
    config_setting(
        name = "war_as_err_func",
        define_values = {
            "war_as_err_value": "yes",
        },
    )
    ios_application(
        war_as_err = select({
            ":war_as_err_func" :"war_as_err=yes",
            "//conditions:default": "war_as_err=no",
        }),
    )
    

    上一篇 : Bazel-修改rules_apple将 warning_as_error (一)

    相关文章

      网友评论

          本文标题:Bazel-Assets资源warning转error (二)

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