Ошибка статического утверждения собственной версии в двоичной версии
Я установил двоичный файл Drake в свой Ubuntu 16.04 xenial
curl -o drake.tar.gz https://drake-packages.csail.mit.edu/drake/continuous/drake-latest-xenial.tar.gz
sudo tar -xvzf drake.tar.gz -C /opt
И я нахожу в моем cmake_package(drake) и пытаюсь выполнить оптимизацию. Но я получил следующую ошибку
/opt/drake/include/drake/common/autodiff.h:15:1: error: static assertion failed: Drake requires Eigen >= v3.3.3.
static_assert(EIGEN_VERSION_AT_LEAST(3, 3, 3)
а также/opt/drake/include/drake/common/autodiffxd.h:232:69: error: ‘MakeAutoDiffScalar’ was not declared in this scope
return MakeAutoDiffScalar(m_value * other, m_derivatives * other);
Я думаю, что я в том числе право Эйген, который находится в /opt/drake/include/eigen3
,
Как я мог это исправить? Кстати в Mac, он хорошо работает с тем же кодом.
1 ответ
Возможно, вы (прямо или косвенно) позвонили find_package(Eigen)
перед тем, как вы это сделали на Drake, в этом случае CMake может находить вашу систему Eigen, а не версию, предоставленную Drake; это отмечено здесь (извините, что это еще не в более очевидном месте):
https://github.com/RobotLocomotion/drake-shambhala/tree/b3d7804/drake_cmake_installed/src/pcl
Если вы делаете find_package(drake)
во-первых, это должно позволить find_package(Eigen)
работать позже.
Если это не сработает, не могли бы вы опубликовать ссылку на ваш код в репозитории GitHub, или вы можете сделать минимальную проблему с воспроизведением?