给出工作空间中源文件的路径,我如何得出Bazel用来引用该文件的标签。这似乎取决于存在哪些软件包。例如,如果我具有以下结构:
.
├── BUILD
├── WORKSPACE
└── src
└── bar
└── foo.go
然后,src/bar/foo.go
的标签为//src/bar/foo.go
。但是,如果我有这种结构:
.
├── BUILD
├── WORKSPACE
└── src
├── BUILD
└── bar
├── BUILD
└── foo.go
然后,同一文件的标签为//src/bar:foo.go
。
是否有一种方法可以让Bazel告诉我标识文件的标签是什么,或者我必须根据工作空间树各个级别上BUILD
个文件的存在/不存在来派生它吗? / p>
答案 0 :(得分:3)
如果path/to/file.txt
存在有效标签,则运行bazel query path/to/file.txt
将返回绝对标签。
例如对于第一个示例:
$ bazel query src/bar/foo.go
//:src/bar/foo.go
,第二个示例:
$ bazel query src/bar/foo.go
//src/bar:foo.go
如果任何BUILD文件中的任何规则(filegroup
,exports_files
等)均未引用该文件,则该文件将没有标签。