在Bazel中,需要使用cc_library规则来定义库和其依赖项。为了避免不必要的依赖项,可以使用私有依赖项和visibility属性。私有依赖项指的是库对其依赖项的引用不会被库的消费者继承。visibility属性指定哪些依赖关系是公共的,这意味着它们可以由该包之外的用户访问。
下面是一个包含私有依赖项和visibility属性的示例BUILD文件:
cc_library(
name = "my_library",
srcs = ["my_library.cc"],
hdrs = ["my_library.h"],
deps = [
"//my/dependency:dep1",
"@my_library//private:dep2", #使用私有依赖项
],
visibility = ["//visibility:public"], #设置可见性属性
)
在上面的示例中,包含一个公共依赖项和一个私有依赖项。私有依赖项是通过目标语法@目标//子路径来引用的,而公共依赖项是通过相对于当前包的路径来引用的。visibility属性指定了依赖项的可见性。
通过使用私有依赖项和visibility属性,可以确保只包含所需的依赖项,并防止在依赖项中添加未使用的代码。