从源文件路径派生 Bazel 标签
Derive Bazel label from source file path
给定工作区内源文件的路径,我如何导出 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 告诉我标识文件的标签是什么,或者我必须根据 presence/absence 的 BUILD
个文件在不同级别的工作区树?
如果存在 path/to/file.txt
的有效标签,运行 bazel query path/to/file.txt
将 return 绝对标签。
例如对于第一个例子:
$ bazel query src/bar/foo.go
//:src/bar/foo.go
第二个例子:
$ bazel query src/bar/foo.go
//src/bar:foo.go
如果文件未在任何 BUILD 文件的任何规则(filegroup
、exports_files
等)中引用,则它不会有标签。
给定工作区内源文件的路径,我如何导出 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 告诉我标识文件的标签是什么,或者我必须根据 presence/absence 的 BUILD
个文件在不同级别的工作区树?
如果存在 path/to/file.txt
的有效标签,运行 bazel query path/to/file.txt
将 return 绝对标签。
例如对于第一个例子:
$ bazel query src/bar/foo.go
//:src/bar/foo.go
第二个例子:
$ bazel query src/bar/foo.go
//src/bar:foo.go
如果文件未在任何 BUILD 文件的任何规则(filegroup
、exports_files
等)中引用,则它不会有标签。