当我运行bazel build
时,bazel报告目标的输出文件。我如何以编程方式查询这个?
在本例中,我想获得bazel-out/...
路径。
$ bazel build foo/bar:registration
INFO: Analyzed target //foo/bar:registration (546 packages loaded, 13485 targets configured).
INFO: Found 1 target...
Target //foo/bar:registration up-to-date:
bazel-out/k8-fastbuild-ST-a82eca4c6b7c/bin/foo/bar/registration/registration_/registration
这可以通过使用cquery
命令的Starlark输出模式非常灵活地完成。例如,要获得与build
类似的输出,使用:
$ bazel cquery --output starlark --starlark:expr '"n".join([f.path for f in target.files.to_list()])' //foo/bar
将来,cquery
中可能还会有一个专门的选项来处理简单的情况,而不需要在命令行中涉及到Starlark。