如何移动Bazel构建目标?

3
所有的bazel规则都将构建目标放置在特定位置。
我可以通过bazel-bin/找到这些目标,但它们会散布在其他我不关心的非目标文件中。
如何编写构建规则以将所有程序放在单个bin/目录中?
我应该编写自己的程序来遍历bazel-bin/并将所有程序rsync到类似于usr/local/bin的位置,还是有一个查询语句可以使用? 我希望它只是构建规则的一部分,但好像默认规则不支持这样的功能。而且我不喜欢先运行构建,然后再运行第二步将所有二进制文件同步到相同的文件夹中的想法。
最佳实践是什么?将所有程序和测试放在相同的特定目录中非常常见。

你有没有找到这个问题的好解决方案?我也在尝试做完全相同的事情。 - gph
当前我使用的是 pkg_tar 的接受答案。您还可以使用 bazel build 中的 --sandbox_writable_path 使程序在系统上输出文件。假设您将要发布的构建规则的 data 工件已准备好,这似乎是一个不错的解决方案。 - Trevor Hickey
1个回答

1

建议使用pkg_tar,您可以使用它来声明要分发的文件/输出,使用package_dir属性将文件放置在tarball中的usr/local/bin或其他位置。


但是这样我们每次都需要“tar”和“untar”所有东西。我只想让我的二进制文件都在同一个地方,并随着我的开发而更新。 - Trevor Hickey
我已经学会了只使用 bazel run 而不需要移动二进制文件。你的解决方案是在开发后打包和部署的最佳选择。 - Trevor Hickey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接