Build System

Cognition

? What is a build system
A tool to automate the process of program compilation.
It maps a set of source resources (in most cases, files) to a target (executable).

? Assumption
Each of the build actions are idempotent

? Memoization
This assumption allows the build system to memoize the actions that is has already performed, and only perform build actions on resources that have changed.
In order to correctly manage this memoization, the build system must know exactly which resources are being used for any given command. The DAG informs the system what has to be rebuilt when a change occurs. If hello.c is altered everything reachable from that node in the DAG must be rebuilt.

? Dependency
In order to do partial rebuilds, a build system must understand both explicit dependencis and implicit dependencies

? Parallelization
Modules of a modular program can compile independently, thus, prallelly.

? How does a build system relate to CI tools
CI tools trigger build whenever developer commit code, to see if project is compiling fine, to run unit tests, to create build or even deploy in production or testing environment.

Bazel

  • abstraction layer
    workspace # with a WORKSPCE file
    package # with a BUILD file
    target # an element of package

    ? target
    files and rules

    ? rule
    relationship between a set of input files and a set of output files # the files generated by a rule always belong to the same package as the rule itself

  • labels
    name of a target
    starts with //, then package name : target name
    package name of a file is its relative path

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值