首页 > 解决方案 > 使用 cmake 从源代码构建 Drake 时的问题

问题描述

我正在尝试从源代码构建和安装 Drake,以获得对 Mosek 的支持。然而,我总是遇到麻烦。作为记录,我正在运行 macOS Catalina。

现在我的方法是这样的:

  1. 将 github 中的 drake 克隆到我计算机上的某个位置(来自https://github.com/RobotLocomotion/drake.git
  2. 安装先决条件./setup/mac/install_prereqs.sh
  3. 运行bazel build //...创建一个名为buildandcd build cmake ..然后make 的目录make install
  4. 在我使用 cmake 构建的 C++ 项目中,我将其添加到 CMakeLists.txt: link_directories(drakelocation/build/install/lib) include_directories(drakelocation/build/install/include)

但是,当我尝试构建我的项目时,我收到 Drake 无法找到 Eigen: 的错误'Eigen/Core' file not found。我能够通过添加来解决这个问题:

target_link_libraries(my_lib Eigen3::Eigen)到我的 CMakeLists.txt

我觉得这有点奇怪,因为我希望 Drake 在构建时包含 Eigen,但至少这让我能够更进一步。

在此之后,我收到一堆类型的消息: no member named 'signbit' in the global namespace

即,Drake 似乎突然失去了所有标准 C++ 库。我还没有能够解决这个问题,所以这是我目前卡住的地方。

您有什么建议,或者您之前遇到过类似的问题吗?

其他信息:

谢谢!

标签: drake

解决方案


感谢@Jamie 解决了我遇到的 find_package() 问题。

我仍然在构建方面遇到了一些问题。原来我的默认 SDK 路径有问题,并且根据以下设置“CMAKE_OSX_SYSROOT”:Catalina C++: Using <cmath> headers yield error: no member named 'signbit' in the global namespace after an update to XCode did诀窍。

在此之后,我从 Eigen 收到了很多奇怪的错误消息,抱怨 ieMatrixXd没有在命名空间“Eigen”中定义。出于某种原因,卸载它,brew uninstall eigen然后从源代码下载和构建 eigen 解决了这些问题。

现在可以了!


推荐阅读