Можно ли сделать библиотеку fmt, которую Дрейк приносит приватной? - PullRequest
0 голосов
/ 03 марта 2020

Мое рабочее пространство - это ros2-подобное рабочее пространство, в котором Drake был обернут в пакет CMake.

drake загружает указанную c версию библиотеки fmt, которую я могу потреблять это. Но дело в том, что мне нужно использовать другую версию fmt, которую я установил в своей системе, и я хотел бы знать, есть ли способ сделать эту библиотеку fmt, которая drake приносит приватной, а не раскрывать ее .

1 Ответ

1 голос
/ 09 марта 2020

Поскольку Дрейк использует #include <fmt/format.h> из своих заголовков publi c, fmt должна оставаться опубликованной c (не скрытой) зависимостью Drake. Нет хорошего способа скрыть такие основные зависимости, которые мы используем (Eigen, fmt, spdlog).

Мы стараемся оставаться в течение нескольких недель после последнего помеченного fmt релиза поэтому мы надеемся, что это работает для большинства пользователей. Я полагаю, вам нужно использовать более старую ревизию?

Вместо того, чтобы fmt скрыть, я предлагаю установить и восстановить Drake, чтобы использовать уже существующий fmt.

Файл, который указывает fmt который использует Дрейк 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.

. Если это решит проблему, мы можем посмотреть на выставление опции конфигурации CMake. для Дрейка, чтобы найти предоставленные пользователем fmt и spdlog.

...