【发布时间】:2017-06-23 14:25:45
【问题描述】:
我正在尝试使用 Bazel 构建和打包 LCM。这适用于“构建”部分,但最终结果是外部消费者无法使用库(即“包”失败,因为包已损坏)。
LCM 使用 glib,我使用 pkg_config_package (gory details) 导入它。更具体地说,LCM 在内部使用 glib,但不向用户公开。这意味着消费者不需要链接 glib; liblcm.so 应该这样做,消费者应该只需要链接到 LCM 本身。
这一切都适用于上游(使用 CMake 并做正确的事)。然而,由于某些未知原因,Bazel 似乎没有将liblcm.so 链接到 glib。如果我在同一个整体环境中使用 Bazel 构建可执行文件,Bazel 似乎知道 LCM 的用户也需要链接到 glib。但是,当我尝试打包这个 LCM 以供外部使用时,它坏了,因为liblcm.so 没有链接到 glib,这迫使消费者处理 LCM 的 private glib 依赖。
为什么 Bazel 没有将 LCM 库链接到 glib,我该如何解决?
(p.s. 我们与 libbot 有类似的问题...)
【问题讨论】:
标签: bazel