apollo-依赖查询机制

Apollo 的依赖查找机制可以想象成一个聪明的图书管理员帮你找参考书的过程,接下来用简单步骤给解释一下:

1.书单准备(BUILD文件)

每个模块的 BUILD 文件就像你的参考书清单,比如:

cc_binary(
    name = "my_module",
    deps = [
        "//modules/common:math",      # 内部书架的书
        "@eigen//:eigen",            # 外部借阅的书
    ]
)

2.图书馆登记 (WORKSPACE 文件)

总目录 WORKSPACE 记录了所有外部图书馆的位置:

http_archive(
    name = "eigen",
    urls = ["https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz"],
)

3.找书流程 (Bazel 的工作方式)

当编译你的模块时,Bazel 会:

  1. 先检查本地书架://modules/common 这种路径指向 Apollo 自己的代码。
  2. 再查外部图书馆:带 @ 符号的依赖会从 WORKSPACE 指定的网址下载。
  3. 自动处理连环借书:如果 A 依赖 B,B 又依赖 C,Bazel 会全部自动解决。

4.智能缓存系统

就像图书馆会把常用书放在前台,Bazel 会缓存下载的依赖,第二次编译时直接使用缓存,速度更快。

5.实际案例

当你的模块需要 Eigen 数学库时:
① Bazel 先在本地找有没有 @eigen。
② 找不到就去 WORKSPACE 里写的网址下载。
③ 解压后存放在缓存目录(默认在 ~/.cache/bazel)。
④ 自动把头文件路径和库文件路径加入到编译命令中。

6.常见问题

  • 如果找不到依赖:检查 BUILD 文件里的依赖名是否拼写正确。
  • 查看 WORKSPACE 里对应的仓库是否正确定义。
  • 可以运行 bazel query @eigen//… 验证依赖是否存在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值