[英]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.