如何获取给定 Bazel 目标的输出文件?

lar*_*rry 8 bazel

理想情况下,我想要一个无需构建的目标的输出文件列表。我想这应该可以使用运行后分析的 cquery 来实现,但不知道如何实现。

Eug*_*ota 5

这是我的output.cquery

def format(target):
  outputs = target.files.to_list()
  return outputs[0].path if len(outputs) > 0 else "(missing)"
Run Code Online (Sandbox Code Playgroud)

您可以按如下方式运行:

bazel cquery //a/b:bundle --output starlark \
  --starlark:file=output.cquery 2>/dev/null

bazel-out/darwin-fastbuild/bin/a/b/something-bundle.zip
Run Code Online (Sandbox Code Playgroud)

有关cquery的更多信息。


小智 1

这里的“输出文件”到底是什么意思?您的意思是您想知道在命令行上构建目标时生成的文件吗?

您希望在什么时候获得此信息?您确实想调用bazel query命令来获取此信息,还是在分析过程中需要它?我认为没有办法使用bazel query, 来获取输出文件的确切预期绝对路径(甚至是工作区相对路径,例如,bazel-out/foo/bar/baz.txt

它可能比您想要的要复杂一些,但是请求输出文件 包含一些有关在 Starlark 中指定输出文件的信息,以及有关获取有关依赖项输出文件的信息的简短信息(请参阅DefaultInfo