小编Luk*_*sam的帖子

Bazel:将 Linux 远程执行平台与 Mac OS 本地平台混合

目标

我正在使用 Bazel 构建多平台 C++ 客户端(iOS、OSX、Android、Windows)。

iOS 和 OSX 是在我的 Mac 上本地构建的(出于必要)。Android 和 Windows 构建在 Docker 容器内。

在构建结束时,我有一个 Bazel 规则,它采用cc_binary每个平台的每个规则并将它们放入.zip.

我想利用 Bazel 的远程执行 API 在容器中构建一些二进制文件,并在本地构建其他二进制文件,然后引用共享缓存将它们整理在一起 - 所有这些都只需一个bazel build命令。

巴泽尔支持

Bazel 声称这些类型的multiplatform构建——其中host(OSX x64)、execution(Linux x64)和target(许多)平台都不同——是可能的。

请参阅https://docs.bazel.build/versions/master/platforms.html

我的经验

但是,我遇到了这个确切的问题:https://github.com/bazelbuild/bazel/issues/5397(其中docker-sandbox有正确的remote构建代理。)

这与下面的 Github 问题一起让我对 Bazel 关于multiplatform构建的主张提出质疑。

https://github.com/bazelbuild/bazel/issues/5309

从根本上说,这些问题似乎表明一个平台(例如 OSX)的本地目标不能与另一平台(例如 Linux)上的远程目标一起构建。

问题

我想知道:

(1) 我想做的事情从根本上与 Bazel 的设计不一致吗?如果是这样,巴泽尔的存在意味着什么multiplatform

(2) 我可以采用一种解决方法来保持隐秘性并保留在 Bazel 构建系统中吗?可以挂载 …

bazel

4
推荐指数
1
解决办法
1804
查看次数

标签 统计

bazel ×1