簡體   English   中英

如何為給定的 Bazel 目標獲取 output 個文件?

[英]How do I get output files for a given Bazel target?

理想情況下,我想要一個沒有構建的目標的 output 個文件列表。 我想這應該可以使用運行后分析的 cquery,但無法弄清楚如何。

這是我的output.cquery

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

您可以按如下方式運行:

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

bazel-out/darwin-fastbuild/bin/a/b/something-bundle.zip

有關cquery的更多信息。

這里的“輸出文件”究竟是什么意思? 您是否想要了解在命令行上構建目標時生成的文件?

您希望在什么時候獲得此信息? 您是否真的想調用bazel query命令來獲取此信息,或者您希望在分析期間使用它? 我不認為有一種方法,使用bazel query ,獲得輸出文件的精確預期絕對路徑(甚至是工作空間相對路徑,例如, bazel-out/foo/bar/baz.txt

它可能比你想要的更多,但是請求輸出文件有一些關於在Starlark中指定輸出文件的信息,只是簡單地了解一下獲取有關依賴項輸出文件的信息(參見DefaultInfo

我對 Engene 的回答稍作改進,因為目標的 output 可能是多個:

bazel cquery  --output=starlark  \
--starlark:expr="'\n'.join([f.path for f in target.files.to_list()])"  \
//foo:bar

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM