我试图建立和安装德雷克的来源,以获得对莫塞克的支持。然而,我总是遇到麻烦。为了记录在案,我正在运行macOS Catalina。
现在我的方法是:
从github到我计算机上的位置的
./setup/mac/install_prereqs.shbazel build //...的 prereqs创建一个名为build和cd buildcmake ..的目录,然后在使用cmake构建的C++项目中创建make和make installlink_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
我觉得这有点奇怪,因为我希望德雷克在建造的时候包括了艾根,但至少这让我能够走得更远。
在此之后,我得到了一堆类型的消息:no member named 'signbit' in the global namespace
也就是说,看起来Drake突然失去了所有标准的C++库。我还没能解决这个问题,所以这就是我目前陷入困境的地方。
你有什么建议吗,或者你以前有没有遇到过类似的问题?
其他资料:
使用
find_package(drake)根本不适用于我的当前方法(cmake无法定位drake-config.cmake)。我是不是遗漏了什么东西,这是必需的,以使这一工作?cmake库将在哪里安装,以及如何将它们安装在那个位置?bazel build //...步骤,直接转到cmake ..步骤,在我运行bazel clean --expunge的每一种不同构建方法之间似乎都没有使用任何cmake ..步骤,以确保与上一次运行相比没有任何问题。。
谢谢!
发布于 2020-04-20 14:00:47
您需要告诉CMake您的Drake安装位置:
list(APPEND CMAKE_PREFIX_PATH /absolute/path/to/drakelocation/build/install)
find_package(drake REQUIRED)
add_library(my_lib ...)
target_link_libraries(my_lib drake::drake)这确保您拥有所有必要的编译器和链接器标志。将包含目录设置为简单的/absolute/path/to/drakelocation/build/install/include是不够的,因为它不包含Drake各种依赖项的包含目录。
注意,在调用bazel之前,不需要自己调用cmake。当您运行make install时,它将在内部调用bazel。
发布于 2020-04-20 17:05:13
谢谢解决了我所遇到的find_package()问题的杰米。
我在建筑上还是有些麻烦。结果发现,我默认的SDK路径有问题,根据这个设置"CMAKE_OSX_SYSROOT“:Catalina C++: Using headers yield error: no member named 'signbit' in the global namespace在XCode更新后就成功了。
在此之后,我从特征收到了许多奇怪的错误消息,抱怨MatrixXd没有在名称空间' Eigen‘中定义。出于某种原因,用brew uninstall eigen卸载它,然后从源代码下载和构建特征,就解决了这些问题。
现在起作用了!
https://stackoverflow.com/questions/61322152
复制相似问题