Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从源文件路径派生Bazel标签_Bazel - Fatal编程技术网

从源文件路径派生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

给定工作区中源文件的路径,如何导出Bazel用于引用该文件的标签。这似乎取决于存在什么包。例如,如果我有以下结构:

.
├── 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进入…
。看见