我的工作区是一个类似 ros2 的工作区,其中 drake 已被包装到 CMake 包中。
drake
fmt
正在拉入我可以使用的特定版本的库。但问题是我需要使用fmt
我系统中安装的另一个版本,我想知道是否有一种方法可以使该fmt
库成为drake
私有而不是公开它。
因为 Drake 使用#include <fmt/format.h>
其公共标头,所以fmt
必须保持 Drake 的公共(非隐藏)依赖项。没有很好的方法来隐藏我们使用的这些核心依赖项 ( Eigen
, fmt
, spdlog
)。
我们尽量保持在最近标记的版本的几周内,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 配置选项以查找用户提供的fmt
和spdlog
.