https://blog.gmem.cc/bazel-study-note

简介

Bazel是Google开源的,类似于Make、Maven或Gradle的构建和测试工具。它使用可读性强的、高层次的构建语言,支持多种编程语言,以及为多种平台进行交叉编译。

Bazel的优势:

  1. 高层次的构建语言:更加简单,Bazel抽象出库、二进制、脚本、数据集等概念,不需要编写调用编译器或链接器的脚本
  2. 快而可靠:能够缓存所有已经完成的工作步骤,并且跟踪文件内容、构建命令的变动情况,避免重复构建。此外Bazel还支持高度并行构建、增量构建
  3. 多平台支持:可以在Linux/macOS/Windows上运行,可以构建在桌面/服务器/移动设备上运行的应用程序
  4. 可扩容性:处理10万以上源码文件时仍然能保持速度
  5. 可扩展性:支持Android、C/C++、Java、Objective-C、Protocol Buffer、Python…还支持扩展以支持其它语言

如何工作

当运行构建或者测试时,Bazel会:

  1. 加载和目标相关的BUILD文件
  2. 分析输入及其依赖,应用指定的构建规则,产生一个Action图。这个图表示需要构建的目标、目标之间的关系,以及为了构建目标需要执行的动作。Bazel依据此图来跟踪文件变动,并确定哪些目标需要重新构建
  3. 针对输入执行构建动作,直到最终的构建输出产生出来

如何使用

当你需要构建或者测试一个项目时,通常执行以下步骤:

  1. 下载并安装Bazel
  2. 创建一个工作空间。Bazel从此工作空间寻找构建输入和BUILD文件,同时也将构建输出存放在(指向)工作空间(的符号链接中)
  3. 编写BUILD文件,以及可选的WORKSPACE文件,告知Bazel需要构建什么,如何构建。此文件基于Starlark这种DSL
  4. 从命令行调用Bazel命令,构建、测试或者运行项目

最全bazle中文教程(转载)相关推荐

  1. Node初学者入门,一本全面的NodeJS教程,微小的web框架,能实现文件上传功能以及数据解析功能...

    Node初学者入门,一本全面的NodeJS教程 转载于:https://www.cnblogs.com/hfultrastrong/p/8036672.html

  2. 2019b官方手册中文版_数据科学|「最全」实至名归,NumPy 官方早有中文教程,结合深度学习,还有防脱发指南...

    文章须知 文章作者:机器之心 责任编辑:书生 审核编辑:阿春 微信编辑:玖蓁 本文转载自公众号 机器之心 (ID:almosthuman2014) 原文链接:「最全」实至名归,NumPy 官方早有中文 ...

  3. 【巨人的肩膀上制造世界】——1——Unity3D实用插件之地形插件Gaia,高质高效搭建你的地形,全中文教程!

    Unity3D快速搭建你的高质量地形,最好用的Unity3D地形制作插件Gaia,全中文教程 目录 1.博文介绍 2.Gaia3分钟制作地形效果展示 3.Gaia导入 4.Gaia编辑栏中文详解 (1 ...

  4. 【巨人的肩膀上制造世界】——2——Unity3D实用插件之QHierarchy,更方便的管理你的层级面板,全中文教程!

    [巨人的肩膀上制造世界]--2--Unity3D实用插件之QHierarchy,更方便的管理你的层级面板,全中文教程! 目录 1.博客介绍 2.QHierarchy介绍 3.QHierarchy操作详 ...

  5. c4d安装没有出现语言文字,c4d中文教程大合集 HDT映速教程 C4D自学全攻略(四部全集)...

    C4D教程大合集中文教程中文字幕IHDT映速教程C4D全攻略(四部全集) 01_蓝书:入门 02_绿书:进阶 03_橙书:室内渲染 04_角色动画 本教学采用最新的R14版本,通俗易懂地详尽介绍CIN ...

  6. PHPCMSV9标签TAGS全静态化教程(中文转义编码改成拼音显示,有图有案例)

    PHPCMS V9标签TAGS全静态化教程(中文转义编码改成拼音显示,有图有案例) PHPCMS默认的TAGS连接样式是中文转义编码的,如下图所示. 对于做SEO的朋友是一个大忌. 下面是经过程序修改 ...

  7. adobe captivate 5.5 中文教程

    adobe captivate 5.5 中文教程 目 录 adobe captivate 5.5 中文教程... 1 目 录... 1 第1节 Adobe Captivate 5.5更新的内容... ...

  8. 【教程转载】 火狐浏览器 实用插件一览(附插件下载地址)

    [教程转载] 火狐浏览器 实用插件一览(附插件下载地址)简单介绍一下: 火狐浏览器(firefox)最大的优点就是安全.快速.稳定. 有些人抱怨火狐的功能太少,有些网页不能正常浏览. 没关系,这些都不 ...

  9. webstorm的中文教程和技巧分享

    webstorm是一款前端javascript开发编辑的神器,此文介绍webstorm的中文教程和技巧分享. webstorm8.0.3中文汉化版下载: 百度网盘下载:http://pan.baidu ...

最新文章

  1. 《LeetCode力扣练习》剑指 Offer 27. 二叉树的镜像 Java
  2. MySQL 使用explain查看执行计划
  3. 计算机语言E9,九种编程语言大对比
  4. Ubuntu12上安装Oracle11gR2
  5. 操作系统原理:操作系统的启动 中断/异常/系统调用
  6. 【转】TFS签入签出规范
  7. Shell脚本中调用另外一个脚本的方法
  8. SpringBoot法律知识分享问答论坛 lawbbs.liuyanzhao.com
  9. GB28181协议介绍
  10. PBRT——零基础到完全吃透系列
  11. Windows Hook案例分析与技术探索
  12. 我在 B 站挖到了 9 款深藏不露的工具,每个都好用到爆!
  13. 如何快速上线、部署javaweb项目
  14. 这些商业心理你了解吗?
  15. Linux内核网络结构,和收发数据基本流程
  16. 《清单革命》内容梳理随笔
  17. Cerc2014 Outer space invaders
  18. 开价20w美元,这家公司想买下你的脸!不限性别年龄,预计2023年投入机器人使用...
  19. C语言C程序的构成,C语言程序的构成.doc
  20. mac上连接魅族手机

热门文章

  1. sprin基础 - AOP
  2. 11月--1293--小马过河
  3. 3点钟无眠区块链社区讨论成果汇总
  4. Web前端学习笔记(3)
  5. python中difference_python-ImageChops.difference的定义
  6. C++ 标准模板库(STL)——适配器(Adaptor)
  7. okcc呼叫中心所选的客户服务代表应该具备什么条件?
  8. 特征向量和特征值的例题及结论1
  9. Inter SIU520 Log阅读
  10. Project项目信息的日程排定方法区别