可以将 drake 带来的 fmt 库设为私有吗?

Can be made the fmt library that drake brings private?

我的工作区是一个类似ros2的工作区,其中drake已经被打包成一个CMake包。

drake 正在引入我可以使用的 fmt 库的特定版本。但问题是我需要使用我在系统中安装的另一个版本的 fmt,我想知道是否有办法制作 drake 带来的 fmt 库私人的,不要暴露它。

因为 Drake 从其 public headers 使用 #include <fmt/format.h>fmt 必须保持对 Drake 的 public(未隐藏)依赖。没有很好的方法来隐藏我们使用的这些核心依赖项(Eigenfmtspdlog)。

我们尽量在最近标记的 fmt 版本的几周内发布,因此我们希望它适用于大多数用户。我想你需要使用旧版本?

与其隐藏 fmt,我建议修补和重建 Drake 以使用您已经存在的 fmt

指定 fmt Drake 使用的文件是 https://github.com/RobotLocomotion/drake/blob/master/tools/workspace/fmt/repository.bzl。在对 github_archive 宏的调用中,添加一个新参数 local_repository_override = "/home/username/tmp/install", 指向具有类似 /home/username/tmp/install/include/fmt/format.h.

路径的布局

如果这解决了问题,我们可以考虑为 Drake 公开一个 CMake 配置选项以找到 user-provided fmtspdlog.