0

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

drakefmt正在拉入我可以使用的特定版本的库。但问题是我需要使用fmt我系统中安装的另一个版本,我想知道是否有一种方法可以使该fmt库成为drake私有而不是公开它。

4

1 回答 1

1

因为 Drake 使用#include <fmt/format.h>其公共标头,所以fmt必须保持 Drake 的公共(非隐藏)依赖项。没有很好的方法来隐藏我们使用的这些核心依赖项 ( Eigen, fmt, spdlog)。

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

我建议不要fmt隐藏,而是修补和重建 Drake 以使用你fmt已经存在的。

指定fmtDrake 使用的文件是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 配置选项以查找用户提供的fmtspdlog.

于 2020-03-09T12:22:48.827 回答