Bazel-Assets资源warning转error (二)

2021-04-13  本文已影响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 (一)

上一篇下一篇

猜你喜欢

热点阅读