我正在尝试从源代码构建和安装 Drake,以获得对 Mosek 的支持。然而,我总是遇到麻烦。作为记录,我正在运行 macOS Catalina。
现在我的方法是这样的:
- 将 github 中的 drake 克隆到我计算机上的某个位置(来自https://github.com/RobotLocomotion/drake.git)
- 安装先决条件
./setup/mac/install_prereqs.sh
- 运行
bazel build //...
创建一个名为build
andcd build
cmake ..
然后make
的目录make install
- 在我使用 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++ 库。我还没有能够解决这个问题,所以这是我目前卡住的地方。
您有什么建议,或者您之前遇到过类似的问题吗?
其他信息:
- 使用
find_package(drake)
根本不适用于我当前的方法(cmake 无法找到 drake-config.cmake)。我在这里遗漏了完成这项工作所需的东西吗?cmake 期望在哪里安装库,我如何在那个地方安装它们? - 我也试过跳过整个
bazel build //...
步骤,直接进入cmake ..
步骤,这似乎没有任何区别。 - 在我运行的每一种不同的构建方法之间
bazel clean --expunge
,以确保没有任何东西从前一次运行中遗留下来。
谢谢!