我正在使用 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 ×1