Я пытаюсь собрать и установить Drake из исходного кода, чтобы получить поддержку Mosek. Однако я продолжаю сталкиваться с неприятностями. Для записи я использую macOS Catalina.
Прямо сейчас мой подход был таким:
- Клон Дрейка из github в папку на моем компьютере (из https://github.com/RobotLocomotion/drake.git)
- Установите prereqs с помощью
./setup/mac/install_prereqs.sh
- Выполните
bazel build //...
Создайте каталог с именем build
и cd build
cmake ..
, а затем make
и make install
- И в моем C ++ проект, который я создаю с помощью cmake, я добавляю это в CMakeLists.txt:
link_directories(drakelocation/build/install/lib)
include_directories(drakelocation/build/install/include)
Однако, когда я пытаюсь построить свой проект, я получаю ошибку, которую Дрейк не может найти Эйген: 'Eigen/Core' file not found
. Я смог обойти это, добавив:
target_link_libraries(my_lib Eigen3::Eigen)
к моему CMakeLists.txt
Я нашел это немного странным, так как я ожидаю, что Дрейк включает Eigen, когда он собирается, но по крайней мере, это дало мне возможность продвинуться немного дальше.
После этого я получаю кучу сообщений типа: no member named 'signbit' in the global namespace
т.е. кажется, что Дрейк внезапно пропускает все стандартные Библиотеки C ++. Я еще не смог решить эту проблему, поэтому я застрял в этом месте.
У вас есть какие-либо предложения, или вы уже сталкивались с подобными проблемами раньше?
Другая информация:
- Использование
find_package(drake)
вообще не работает с моим текущим подходом (cmake не может найти drake-config.cmake). Я что-то упускаю здесь, что требуется для этой работы? Где cmake ожидает установки библиотек и как их установить в этом месте? - Я также попытался пропустить весь шаг
bazel build //...
, перейдя непосредственно к шагу cmake ..
, который не показался чтобы что-то изменить. - В промежутке между различными подходами к сборке я запустил
bazel clean --expunge
, чтобы убедиться, что ничего не осталось от предыдущего запуска.
Спасибо!