可以把 drake 自带的 fmt 库做成私有的吗?
Posted
技术标签:
【中文标题】可以把 drake 自带的 fmt 库做成私有的吗?【英文标题】:Can be made the fmt library that drake brings private? 【发布时间】:2020-03-03 19:53:17 【问题描述】:我的工作区是一个类似 ros2 的工作区,其中 drake 已被包装到 CMake 包中。
drake
正在拉入特定版本的 fmt
库,我可以使用它。但问题是我需要使用我系统中安装的另一个版本的fmt
,我想知道是否有办法使drake
带来的fmt
库私有而不公开它.
【问题讨论】:
【参考方案1】:因为 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
。
【讨论】:
哦,好吧,这真的很有帮助。感谢您的宝贵时间!以上是关于可以把 drake 自带的 fmt 库做成私有的吗?的主要内容,如果未能解决你的问题,请参考以下文章