Tool之Bazel:Bazel的简介、安装、使用方法之详细攻略

简介: Tool之Bazel:Bazel的简介、安装、使用方法之详细攻略

Bazel的简介


     Bazel:Build and test software of any size, quickly and reliably任意大小、快速、可靠的测试软件。Bazel是google推出的一款工程编译工具,并且已经将其开源。Bazel可以快速地构建可靠的代码,谷歌的大多数软件都是由它来构建,因此,在谷歌的开发环境里,它主要负责处理代码构建相关问题:大规模数据构建问题,共享代码库问题,从源代码构建的软件的相关问题。Bazel支持多种语言并且跨平台,还支持自动化测试和部署、具有再现性(Reproducibility)和规模化等特征。Bazel在谷歌大规模软件开发实践能力方面起着至关重要的作用。简单来说,Bazel类似于make。


加快构建和测试速度:BaZeL只重建必要的东西。通过高级的本地缓存和分布式缓存、优化的依赖性分析和并行执行,可以快速和增量地进行构建。

一种工具,多种语言:构建和测试Java、C++、Android、IOS、GO以及各种各样的其他语言平台。BAZEL在Windows、MaOS和Linux上运行。

可缩放:BAZEL帮助您扩展您的组织、代码库和持续集成系统。它处理任意大小的代码库,在多个存储库或巨大的MMOREPO中。

可扩展到您的需要:用Bazel熟悉的扩展语言轻松地支持新语言和新平台。共享和重用由成长中的Bazel社区编写的语言规则。

官网地址:https://www.bazel.build


1、Bazel的应用:可以构建一个服务器、Android和iOS应用。





Bazel的安装


1、Windows安装&安装:https://docs.bazel.build/versions/master/install-windows.html


(1)、下载并安装,

(2)、将该路径添加到系统环境变量内

(3)、编辑环境参数:从“控制面板或开始菜单”打开“环境变量”对话框,并在“用户变量”部分下添加或编辑以下变量:

1)、编辑路径。将新条目添加到列表的开头:BAZEL.EXE的目录。(例如:C:BAZEL)。MSYS2的UR \ bin目录。(例如:c:\Mys64 \ Ur\bin)。如果您将构建Python代码:Python .EXE的目录。(例:C:\Python 3)。

2)、添加BZELLSHIH,其价值必须是MyS2 BASH的路径。例子:c:\Mys64 \Ur\bin \Bas.EXE

3)、添加JavaJHEAD(如果你将构建Java代码)。它的值必须是安装Java JDK 8的目录,例如C:\程序文件\java\jdk1.8015152。


2、Ubuntu下载&安装:https://docs.bazel.build/versions/master/install-ubuntu.html



Bazel的使用方法


0、使用bazel时,先要了解几个概念:


workspace 工作空间,每个工作空间中由一个WORKSPACE文件,来描述工作空间所使用到的信息。

package 程序包,每个程序包中包含一个BUILD文件,此文件中描述了此工具包的生成构建方式。

target 目标,生成的目标,每个target又可以作为另外一个规则的输入。绝大部分的target属于两种基本类型中的一种,file和rule。另外,还有一种其他的target类型,package group。但是他们很少见。

(1)、关于工作区

bazel builds应该在一个工作区内运行,这个工作区应该包括源代码和build输出目录的符号链接(eg: bazel-bin、bazel-out)。工作区目录的位置是可以随意,但工作区的根目录必须包含一个名为WORKSPACE的工作区配置文件,工作区配置文件可以是一个空文件,也可以包含引用外部构建输出所需的依赖关系。在一个工作区内,可以根据需求共享多个项目。


(2)、创建Build文件

Bazel通过检查BUIDL文件可以知道那些目标文件被创建在项目中,这些BUILD文件采用与Python相似的语法所写,这种语言通常是一系列规则的声明,每个规则指定相应的输入、输出以及实现输入到输出的方法。



1、Windows使用方法:https://docs.bazel.build/versions/master/windows.html


2、Ubuntu使用方法:


相关文章
|
网络协议 安全 Linux
Tool之wget:wget的简介、安装、入门、使用方法之详细攻略(一)
Tool之wget:wget的简介、安装、入门、使用方法之详细攻略
Tool之wget:wget的简介、安装、入门、使用方法之详细攻略(一)
|
机器学习/深度学习 JavaScript 数据挖掘
DL框架之MXNet :深度学习框架之MXNet 的简介、安装、使用方法、应用案例之详细攻略
MXNet 是亚马逊(Amazon)选择的深度学习库,并且也许是最优秀的库之一。它拥有类似于 Theano 和 TensorFlow 的数据流图,为多 GPU 配置提供了良好的配置,有着类似于 Lasagne 和 Blocks 更高级别的模型构建块,并且可以在你可以想象的任何硬件上运行(包括手机)。对 Python 的支持只是其冰山一角—MXNet 同样提供了对 R、Julia、C++、Scala、Matlab,和 Javascript 的接口。
DL框架之MXNet :深度学习框架之MXNet 的简介、安装、使用方法、应用案例之详细攻略
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
云上一键部署通义千问 QwQ-32B 模型,阿里云 PAI 最佳实践
3月6日阿里云发布并开源了全新推理模型通义千问 QwQ-32B,在一系列权威基准测试中,千问QwQ-32B模型表现异常出色,几乎完全超越了OpenAI-o1-mini,性能比肩Deepseek-R1,且部署成本大幅降低。并集成了与智能体 Agent 相关的能力,够在使用工具的同时进行批判性思考,并根据环境反馈调整推理过程。阿里云人工智能平台 PAI-Model Gallery 现已经支持一键部署 QwQ-32B,本实践带您部署体验专属 QwQ-32B模型服务。
|
存储 人工智能 运维
阿里云自研存储部件创新亮相2024全球闪存峰会
阿里云在AI时代背景下对自研存储部件进行的一系列创新实践并取得丰硕成果。
阿里云自研存储部件创新亮相2024全球闪存峰会
|
存储 网络协议 大数据
一文读懂RDMA: Remote Direct Memory Access(远程直接内存访问)
该文档详细介绍了RDMA(远程直接内存访问)技术的基本原理、主要特点及其编程接口。RDMA通过硬件直接在应用程序间搬移数据,绕过操作系统协议栈,显著提升网络通信效率,尤其适用于高性能计算和大数据处理等场景。文档还提供了RDMA编程接口的概述及示例代码,帮助开发者更好地理解和应用这一技术。
|
11月前
|
机器学习/深度学习 自然语言处理 并行计算
探索深度学习中的Transformer模型及其在自然语言处理中的应用
【10月更文挑战第6天】探索深度学习中的Transformer模型及其在自然语言处理中的应用
645 0
|
缓存 应用服务中间件 Go
Go打包和部署:从编译到运行的全指南
本文介绍了Go语言项目的打包和部署方法,包括使用`go run`、`go build`和`go install`命令进行编译,以及跨平台交叉编译。文章还提到了编译参数如`-x`、`-n`和`-race`等。此外,还讨论了如何利用第三方工具(如go-bindata)打包非Go文件,以及清理编译缓存和压缩二进制文件。最后,文中展示了如何使用supervisor和Docker进行部署,并提供了Nginx的反向代理配置示例。
4053 1
|
存储 SQL 自然语言处理
RAG技术全解析:打造下一代智能问答系统
一、RAG简介 大型语言模型(LLM)已经取得了显著的成功,尽管它们仍然面临重大的限制,特别是在特定领域或知识密集型任务中,尤其是在处理超出其训练数据或需要当前信息的查询时,常会产生“幻觉”现象。为了克服这些挑战,检索增强生成(RAG)通过从外部知识库检索相关文档chunk并进行语义相似度计算,增强了LLM的功能。通过引用外部知识,RAG有效地减少了生成事实不正确内容的问题。RAG目前是基于LLM系统中最受欢迎的架构,有许多产品基于RAG构建,使RAG成为推动聊天机器人发展和增强LLM在现实世界应用适用性的关键技术。 二、RAG架构 2.1 RAG实现过程 RAG在问答系统中的一个典型
1444 2
什么是语句?什么是表达式?怎么区分?
编程语言中的语句和表达式是基础概念。语句是执行操作或命令的代码行,如Python的`print("Hello, World!")`,通常以换行符结束。表达式则表示值或计算过程,如`2 + 2`,可赋值给变量或用于计算。语句侧重于执行动作,表达式侧重于计算值。表达式可含运算符、变量等,而语句由主语和谓语构成。示例中,`x = 10`和`print("Hello, World!")`是语句,`y = x + 5`和`result = a * b + c`是表达式。
|
安全 算法 Linux
SSH协议的原理和使用:深入剖析SSH协议的原理和使用方法
SSH协议的原理和使用:深入剖析SSH协议的原理和使用方法
3721 0