可以把 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 的公共(非隐藏)依赖项。没有好的方法可以隐藏我们使用的这些核心依赖项(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 配置选项,以找到用户提供的 fmtspdlog

【讨论】:

哦,好吧,这真的很有帮助。感谢您的宝贵时间!

以上是关于可以把 drake 自带的 fmt 库做成私有的吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何把python文件做成exe文件

Java中的构造函数可以是私有的吗?

你的网站适合做双语版的吗?

Javascript 中的私有成员。它们可以是非静态的吗?

Drake中的离散化

libstdc++.so.6 是linux自带的吗? 安装完linux就有了?还是另外需要额外安装的软件?