bazel系列之扩展综述
1. 加载扩展
https://docs.bazel.build/versions/master/build-ref.html#load
bazel扩展文件扩展名为 .bzl。使用load语句从extension导入符号。
load("//foo/bar:file.bzl", "some_library")
这个代码片段将会加载 foo/bar/file.bzl文件,并添加some_library符号到环境当中。load可以用于加载新规则、函数或常量(例如,字符串、列表等)。在调用load时,可以通过增加额外参数,同时导入多个符号。参数必须是字符串(而不是变量),load语句必须出现在顶层,不能放在函数体内。load的第一个参数是一个指定 .bzl文件的label。如果它是一个相对路径的label,是以包含当前 bzl 文件的包(而不是目录)作为解析依据的。load语句中的relative label应该使用 “:” 开头。load也支持别名,可以给导入的符号指定不同的名字。
load("//foo/bar:file.bzl", library_alias = "some_library")
你可以在一条load语句中定义多个别名。而且,参数列表还可以既包含别名,又包含正常的符号名。接下来的例子是完全合法的,请注意何时使用引号
load(":my_rules.bzl", "some_rule", nice_alias = "some_other_rule")
在一个 .bzl 文件中,下划线开头的符号将不会被导出,且不能从其他文件加载它。visibility不会影响加载,你不必使用export_files 使 .bzl 文件可见。
2. bazel扩展概述
https://docs.bazel.build/versions/master/skylark/concepts.html