从源文件路径派生Bazel标签
给定工作区中源文件的路径,如何导出Bazel用于引用该文件的标签。这似乎取决于存在什么包。例如,如果我有以下结构:从源文件路径派生Bazel标签,bazel,Bazel,给定工作区中源文件的路径,如何导出Bazel用于引用该文件的标签。这似乎取决于存在什么包。例如,如果我有以下结构: . ├── BUILD ├── WORKSPACE └── src └── bar └── foo.go . ├── BUILD ├── WORKSPACE └── src ├── BUILD └── bar ├── BUILD └── foo.go 然后,src/bar/foo.go的标签是//src/b
.
├── BUILD
├── WORKSPACE
└── src
└── bar
└── foo.go
.
├── BUILD
├── WORKSPACE
└── src
├── BUILD
└── bar
├── BUILD
└── foo.go
然后,src/bar/foo.go
的标签是//src/bar/foo.go
。但是,如果我有这种结构:
.
├── BUILD
├── WORKSPACE
└── src
└── bar
└── foo.go
.
├── BUILD
├── WORKSPACE
└── src
├── BUILD
└── bar
├── BUILD
└── foo.go
那么同一文件的标签是//src/bar:foo.go
有没有办法让Bazel告诉我标识文件的标签是什么,或者我必须根据工作区树的不同级别上是否存在
BUILD
文件来派生它?如果存在路径/to/file.txt
的有效标签,运行bazel查询路径/to/file.txt将返回绝对标签
e、 g.关于第一个例子:
$ bazel query src/bar/foo.go
//:src/bar/foo.go
第二个例子:
$ bazel query src/bar/foo.go
//src/bar:foo.go
如果文件未在任何生成文件中的任何规则(filegroup
,exports\u files
等)中引用,则该文件将没有标签 感谢您的回答,也感谢您澄清了我问题中的不准确之处,bazel query
当然是答案:-)更新了我的答案。令人惊讶的是@Jin有一种方法可以在一个命令中识别所有将文件作为src的目标,而不是@petros eskinder中建议的两个bazel query
命令,使用让var=expr进入…
。看见