我的工作区是一个类似 ros2 的工作区,其中 drake 已被包装到 CMake 包中。
drakefmt正在拉入我可以使用的特定版本的库。但问题是我需要使用fmt我系统中安装的另一个版本,我想知道是否有一种方法可以使该fmt库成为drake私有而不是公开它。
因为 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 配置选项以查找用户提供的fmt和spdlog.