Binary 如何在bazel中打包所有二进制文件?
在我的mono repo的层次结构中,分散着大量的构建文件。Binary 如何在bazel中打包所有二进制文件?,binary,directory,packaging,bazel,Binary,Directory,Packaging,Bazel,在我的mono repo的层次结构中,分散着大量的构建文件。 其中一些文件包含cc\u二进制规则。 我知道它们都内置在bazel bin中,但我希望能够轻松访问它们。 例如,如何将它们打包并放入~/.bin/ 我明白了,但我不清楚如何编写一个规则来捕获每个程序并将它们打包在一起。这可能不是最优雅的解决方案(另外我希望我得到了这个问题),但这就是我们如何将每个二进制文件打包到自己的bazel包中的方法 cc_binary( name = "hello" ... ) load("@
其中一些文件包含
cc\u二进制
规则。我知道它们都内置在
bazel bin
中,但我希望能够轻松访问它们。例如,如何将它们打包并放入
~/.bin/
我明白了,但我不清楚如何编写一个规则来捕获每个程序并将它们打包在一起。这可能不是最优雅的解决方案(另外我希望我得到了这个问题),但这就是我们如何将每个二进制文件打包到自己的bazel包中的方法
cc_binary(
name = "hello"
...
)
load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar")
pkg_tar(
name = "hello_pkg",
srcs = [":hello"],
mode = "0755",
package_dir = "/usr/bin",
)
然后我们将所有这些数据收集到project root中的一个总体tarball/包中:
pkg_tar(
name = "mypkg",
extension = "tar.gz",
deps = [
"//hello:hello_pkg",
...
],
)
有时,我们实际上会有多个这样的规则供hello收集,例如
bin
下的可执行文件和lib
中的库,中间对象是hello\u bin
和hello\u lib
目标。它将以与上面的mypkg
相同的方式首先聚合为hello\u pkg
,然后在mypkg
中使用,这可能不是最优雅的解决方案(另外,我希望我得到了这个问题),但这是我们通过包装/“tarring”实现的方式每个二进制文件都有自己的bazel包/BUILD
文件:
cc_binary(
name = "hello"
...
)
load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar")
pkg_tar(
name = "hello_pkg",
srcs = [":hello"],
mode = "0755",
package_dir = "/usr/bin",
)
然后我们将所有这些数据收集到project root中的一个总体tarball/包中:
pkg_tar(
name = "mypkg",
extension = "tar.gz",
deps = [
"//hello:hello_pkg",
...
],
)
有时,我们实际上会有多个这样的规则供hello收集,例如
bin
下的可执行文件和lib
中的库,中间对象是hello\u bin
和hello\u lib
目标。这将以与上面的mypkg
相同的方式首先聚合为hello\u pkg
,然后依次用于mypkg
谢谢,这可能是最好的方法。这使得快速迭代很难实现。我希望更改代码,重建,然后从repo外部运行更新的系统工具。至少对于迭代,我必须弄清楚如何有效地使用bazel-run
。实际上,对于这种用例,bazel-run
很可能就是您想要的。尽管除非你对布局做了很多修改,否则这大部分都是一次性的工作,是的,还有一些(取决于项目)额外的机器时间+存储。谢谢,这可能是最好的方法。这使得快速迭代很难实现。我希望更改代码,重建,然后从repo外部运行更新的系统工具。至少对于迭代,我必须弄清楚如何有效地使用bazel-run
。实际上,对于这种用例,bazel-run
很可能就是您想要的。尽管除非您对布局进行大量更改,否则这将主要是一次性的工作,并且是一些(取决于项目)额外的机器时间+存储。