Bazel 依赖关系理解

本文介绍了Bazel构建系统中的依赖关系,包括直接依赖与传递依赖,实际依赖与声明依赖的区别,并探讨了srcs、deps和data三种不同类型的依赖规则。在理解这些概念的基础上,有助于确保构建过程的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Dependencies:

     在构建或者执行时,目标A依赖于目标B,这种依赖关系产生一个有向无环图,我们将这种有向无环图称为依赖图,一个目标的直接依赖关系指的是在依赖图中可以以1步到达依赖对象的关系,二传递依赖关系指的是需要经过数步才能到达依赖对象的关系。

     事实上在构建的上下文中,有两种依赖关系,实际依赖关系和声明依赖关系。两者差别极小。实际依赖关系指的是构建或者执行的时候A需要B,而声名依赖关系仅仅是在包A中有从A到B的一条依赖线。

    为了确保构建的正确性,实际依赖关系A必须是声名依赖关系的子图,也就是说,每一个在A中的直接依赖关系对x--->y,必须也是D中的直接依赖关系对。

    在a、b、c三个个字包含了BUILD文件的三个包中,a依赖b,b依赖c,比如下图:

      

其中的声明依赖关系为:deps:a-->b;b-->c;

实际依赖关系为:各自srcs的目标文件中的import 及相应的函数的表征:a-->b;b-->c;

三种常见的构建规则的依赖关系类型:

1、srcs依赖:也就是BUILD文件中规则的属性Srcs的值,他表示构建该规则时使用的程序代码;

2、deps依赖:也就

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值