本征版本静态断言在二进制版本中失败
Eigen version static assertion fail in binary version
我在 ubuntu 16.04 xenial 中安装了 drake 二进制文件
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
我 find_package(drake) 在我的 cmake 中尝试进行优化。
但是我收到以下错误
/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 中,使用相同的代码效果很好。
可能是您在对 Drake 执行此操作之前(直接或间接)调用了 find_package(Eigen)
,在这种情况下,CMake 可能会找到您的系统 Eigen 而不是 Drake 提供的版本;这是在这里注明的(抱歉,它还没有在更明显的位置):
https://github.com/RobotLocomotion/drake-shambhala/tree/b3d7804/drake_cmake_installed/src/pcl#eigen
如果您首先执行 find_package(drake)
,那么它应该允许 find_package(Eigen)
稍后工作。
如果这不起作用,你可以 post 对 GitHub 存储库中的代码进行 link,或者你可以做一个最小的复制问题吗?
我在 ubuntu 16.04 xenial 中安装了 drake 二进制文件
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
我 find_package(drake) 在我的 cmake 中尝试进行优化。
但是我收到以下错误
/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 中,使用相同的代码效果很好。
可能是您在对 Drake 执行此操作之前(直接或间接)调用了 find_package(Eigen)
,在这种情况下,CMake 可能会找到您的系统 Eigen 而不是 Drake 提供的版本;这是在这里注明的(抱歉,它还没有在更明显的位置):
https://github.com/RobotLocomotion/drake-shambhala/tree/b3d7804/drake_cmake_installed/src/pcl#eigen
如果您首先执行 find_package(drake)
,那么它应该允许 find_package(Eigen)
稍后工作。
如果这不起作用,你可以 post 对 GitHub 存储库中的代码进行 link,或者你可以做一个最小的复制问题吗?