如何在CMake中添加Pinocchio机器人库作为项目依赖?
我已通过以下命令安装了不带Python绑定的Pinocchio C++版本:
sudo apt install -qqy robotpkg-pinocchio
使用官方文档中的简单示例源码,通过以下命令编译可成功:
g++ -std=c++11 overview-simple.cpp -o overview-simple $(pkg-config --cflags --libs pinocchio)
在独立C++项目中尝试通过CMake引入Pinocchio时,两种方法均失败:
1. 以包形式查找失败
尝试在CMake配置中使用包查找:
find_package(pinocchio 2.6.10)
报错信息:
By not providing "FindPinocchio.cmake" in CMAKE_MODULE_PATH this project
has asked CMake to find a package configuration file provided by
"Pinocchio", but CMake did not find one.Could not find a package configuration file provided by "Pinocchio"
(requested version 2.6.10) with any of the following names:PinocchioConfig.cmake
pinocchio-config.cmakeAdd the installation prefix of "Pinocchio" to CMAKE_PREFIX_PATH or set
"Pinocchio_DIR" to a directory containing one of the above files. If
"Pinocchio" provides a separate development package or SDK, be sure it has
been installed.
请问能否在CMake文件中指定已安装的Pinocchio库路径?
2. 直接添加编译选项失败
尝试直接在CMake中添加编译选项/参数:
target_compile_options(${PROJECT_NAME} PUBLIC $(pkg-config --cflags --libs pinocchio))
同样报错。执行pkg-config --cflags --libs pinocchio的输出如下:
-DPINOCCHIO_WITH_URDFDOM -DPINOCCHIO_WITH_HPP_FCL -DHPP_FCL_HAS_OCTOMAP -DHPP_FCL_HAVE_OCTOMAP -DFCL_HAVE_OCTOMAP -DOCTOMAP_MAJOR_VERSION=1 -DOCTOMAP_MINOR_VERSION=9 -DOCTOMAP_PATCH_VERSION=7 -I/opt/openrobots/lib/pkgconfig/../../include -I/opt/openrobots/include -I/usr/local/include/eigen3 -I/usr/lib/x86_64-linux-gnu/pkgconfig/../../../include -L/opt/openrobots/lib/pkgconfig/../../lib -L/opt/openrobots/lib -L/usr/lib/x86_64-linux-gnu/pkgconfig/../../../lib/x86_64-linux-gnu -Wl,-rpath,/opt/openrobots/lib/pkgconfig/../../lib -lpinocchio -Wl,-rpath,/usr/lib/x86_64-linux-gnu -lboost_filesystem -lboost_serialization -lboost_system -lurdfdom_sensor -lurdfdom_model_state -lurdfdom_model -lurdfdom_world -lconsole_bridge -Wl,-rpath,/opt/openrobots/lib -lhpp-fcl -loctomap -loctomath
内容的提问来源于stack exchange,提问作者Leonardo Maglanoc

