本征版本静态断言在二进制版本中失败

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,或者你可以做一个最小的复制问题吗?