bazel

----什么是bazel----

Bazel是google推出的一款工程编译工具,并且已经将其开源。

// 官网
https://www.bazel.build/
// github
https://github.com/bazelbuild/bazel

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

----bazel安装----

bazel支持的平台有Ubuntu linux、Mac OS X、Windows等,本教程基于Ubuntu14.04下的bazel,其它平台的安装参考官网安装教程。

https://docs.bazel.build/versions/master/install-ubuntu.html

Ubuntu下bazel的安装可以用以下方式:
- 1. 传统的API库安装(推荐)
- 2. 二进制安装
- 3. 源代码编译安装

传统的API库安装的安装方法:

1. Install JDK 8

Install JDK 8 by using:

sudo apt-get install openjdk-8-jdk
On Ubuntu 14.04 LTS you'll have to use a PPA:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update && sudo apt-get install oracle-java8-installer
2. Add Bazel distribution URI as a package source (one time setup)

echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -
If you want to install the testing version of Bazel, replace stable with testing.

3. Install and update Bazel

sudo apt-get update && sudo apt-get install bazel
Once installed, you can upgrade to a newer version of Bazel with:

sudo apt-get upgrade bazel

----几个概念----

如果要使用bazel,首先需要了解几个概念:
- workspace 工作空间,每个工作空间中由一个WORKSPACE文件,来描述工作空间所使用到的信息。
- package 程序包,每个程序包中包含一个BUILD文件,此文件中描述了此工具包的生成构建方式。
- target 目标,生成的目标,每个target又可以作为另外一个规则的输入。
绝大部分的target属于两种基本类型中的一种,file和rule。另外,还有一种其他的target类型,package group。但是他们很少见。

bazel_第1张图片

----第一个例子----

可以参见:

https://github.com/wanguanglu/test/tree/master/test_bazel/0.hello
bazel_第2张图片
在此工作空间中WORKSPACE文件为空。仅仅起到标记作用,标记当前为一个工作空间。BUILD文件中信息如下:

genrule(
  name = "hello",
  outs = ["hello_world.txt"],
  cmd = "echo Hello World > $@",
)
其中genrule就是Rule的一种,通过执行指令来生成输出文件。其中name,outs,cmd为其属性。首先这条规则的名字为hello。起输出为hello_world.txt,执行的指令为echo Hello World > $@。运行命令:

bazel build :hello
会在bazel-genfiles文件夹中生成hello_world.txt文件,文件内容为Hello World。









你可能感兴趣的:(ubuntu)