当前位置: 首页 > 知识库问答 >
问题:

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

燕朝明
2023-03-14

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

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

在构建结束时,我有一个Bazel规则,它接受每个平台的每个cc_binary规则,并将它们放在.zip中。

这一点,以及下面的Github问题,让我质疑Bazel关于多平台构建的说法。

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

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

共有1个答案

濮阳品
2023-03-14

(1)我试图做的事情从根本上与巴泽尔的设计不一致吗?

理论上不,实际上是的。Bazel提供了允许用户支持您的用例的功能,但它在默认情况下并不实现。

具体地说,正如链接的Bazel问题中所描述的:Bazel规则目前对主机和目标平台之间的关系做出了假设,这在您的情况下不成立,例如,它将自动检测主机(macOS)上的JDK文件,然后默认在所有Java操作中使用这些JDK文件--而不管目标平台如何。

是的,您可以从Windows VM或Docker容器中运行Bazel build..。这是当我问这个问题时,Bazel团队推荐的变通方法。

相关高级Bazel特性:

  • 如果您希望通过一个Bazel调用为多个目标平台构建,请查看Bazel用户定义的转换(这将允许您为多个平台构建相同的规则,例如同时为iOS和macOS,但需要您编写自己的规则)。
  • 如果不想在容器/VM中运行Bazel build,可以编写自己的C++工具链。在其核心,Bazel为每个操作提供了一个包含所有相关文件的沙箱,并保证它将执行特定的命令。在自定义C++工具链中,您可以告诉Bazel调用脚本而不是clang,后者接受命令+文件,并在VM或容器中执行它们。这可能需要大量的工作,但肯定是可能的。
 类似资料:
  • 我是一名PHP、HTML5、CSS3、Javascript、Jquery、Angular的全栈开发人员,热衷于学习任何新技术 现在,我有了一个混合移动应用程序项目(更简单,只需少量的curd操作和web服务),而且它还将是web应用程序,我需要尽快交付。所以我的问题是为正确的工作选择正确的工具 混合应用程序可以使用 平台:Phonegap或cordova,根据我的理解,cordova是Phoneg

  • 本文向大家介绍Linux平台mysql开启远程登录,包括了Linux平台mysql开启远程登录的使用技巧和注意事项,需要的朋友参考一下 开发过程中经常遇到远程访问mysql的问题,每次都需要搜索,感觉太麻烦,这里记录下,也方便我以后查阅。 首先访问本机的mysql(用ssh登录终端,输入如下命令): mysql -uroot -p 输入密码登陆进去后,输入如下的语句: 其中: user是用户名 m

  • 问题内容: 我正在寻找Windows,Linux,MacOS X的跨平台脚​​本(语言)。我对.bat / bash感到厌倦。 我想在自动登录时执行例如``锁定工作站’‘之类的操作(我在X-Window中有此功能,但是解决方案非常丑陋;现在,我希望在MS Windows上实现,而不是丑陋的:-)) 。 通常:自动执行任务。 还是使用Windows Scripting Host会更好? PowerS

  • 工具准备 Ubuntu 16.04,我们已在 Ubuntu 16.04 上做了版本功能的完整验证,建议用户使用此发行版,以防止由于版本不同引发编译或运行错误。下载参见:官网页面,aliyun 镜像站。 cocos2d-x v3.17,下载后解压,下载参见:Cocos官网页面 建议将默认软件源,替换为国内的软件源, 如//mirrors.aliyun.com/ubuntu, 这样在下载依赖时会有更快

  • 问题内容: 如何在远程Linux机器上执行命令/脚本?说我想从框a的框b开始服务tomcat。 问题答案: 我想这是最好的安全方式,例如: 必须根据您的特定需求(例如,仅绑定到ipv4)部署OPTIONS的地方,并且您的远程命令可能正在启动您的tomcat守护程序。 注意 : 如果不想在每次运行ssh时都提示您,也请查看ssh- agent,以及系统允许的情况。关键是…了解ssh密钥交换过程。请仔

  • 我使用约塞米蒂,但我无法用cordova phonegap构建android应用程序 我的".bash_profile"文件 Cordova、nodejs、ant版本 我的Android SDK组件 (抱歉不能附上照片) 我在“/Users/huy/Documents/zPhoneGap/Helloworld”有一个phonegap项目 然后将android平台添加到这个phonegap项目中 在