在终端中轻松获取 bazel-bin 目录

Ben*_*rth 5 bazel

我已经使用 生成了一些输出文件bazel build,但是每次需要访问输出时指定 bazel-bin 目录的路径有点繁琐。

在深度嵌套的bazel项目中,我不仅需要获取特定的存储库,/Users/username/repos/organisation/folder/folder/repo我还需要添加bazel-bin/folder1/folder2/folder3/folder4/binary_i_want. 我更愿意说$output/binary_i_want。Bazel 应该能够获取项目目录(因为它查找工作区文件),并找到bazel-bin,然后查找我所在的等效目录。这是因为我可能不会直接运行它,而是复制此文件使用 adb push 到 Android 设备。

这可能吗?谢谢

Sjo*_*her 7

您可以用于$(bazel info bazel-bin)/binary_i_want此用途。

编辑:获取由规则生成的工件的完整路径有点复杂。使用的一种选择jq可能是:

$(bazel info workspace)/$(bazel aquery //:some_path --output jsonproto 2>/dev/null | jq -r ".artifacts[0].execPath")

(受到这个答案的启发:Bazel:How do you get the path to a generated file?