执行cmake ..构建包时遇OMPL相关库未找到错误求助
CMake构建失败:OMPLAPPBASE_LIBRARY和OMPLAPP_LIBRARY未找到
执行cmake ..构建个人软件包时,出现两条CMake策略警告,且核心错误为OMPLAPPBASE_LIBRARY和OMPLAPP_LIBRARY未找到,这两个库被项目中的bsp-app-demo、bsp_lib等目标依赖。尝试多种方法未解决,怀疑问题与OMPL相关但无法定位具体原因。
完整错误日志(中文翻译)
CMake弃用警告 在CMakeLists.txt:297 (cmake_policy): CMP0042策略的旧行为将在未来版本的CMake中移除。 cmake-policies(7)手册说明所有策略的旧行为均已弃用,仅在特定短期场景下才应将策略设置为OLD。项目应迁移至新行为,不要依赖设置为OLD。 -- CXX编译器标识为GNU 9.4.0 -- C编译器标识为GNU 9.4.0 -- 检查可用CXX编译器:/usr/bin/c++ -- 检查可用CXX编译器:/usr/bin/c++ -- 可用 -- 检测CXX编译器ABI信息 -- 检测CXX编译器ABI信息 - 完成 -- 检测CXX编译特性 -- 检测CXX编译特性 - 完成 -- 检查可用C编译器:/usr/bin/cc -- 检查可用C编译器:/usr/bin/cc -- 可用 -- 检测C编译器ABI信息 -- 检测C编译器ABI信息 - 完成 -- 检测C编译特性 -- 检测C编译特性 - 完成 -- 构建Debug版本 -- 找到Boost:/usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (找到版本 "1.71.0") 找到组件: date_time thread serialization filesystem system program_options unit_test_framework chrono CMake警告(dev) 在/usr/share/cmake-3.16/Modules/FindOpenGL.cmake:275 (message): 未设置策略CMP0072:当GLVND可用时,FindOpenGL默认优先使用GLVND。运行"cmake --help-policy CMP0072"查看策略详情。使用cmake_policy命令设置策略以抑制此警告。 FindOpenGL同时找到旧版GL库: OPENGL_gl_LIBRARY: /usr/lib/x86_64-linux-gnu/libGL.so 以及OpenGL和GLX的GLVND库: OPENGL_opengl_LIBRARY: /usr/lib/x86_64-linux-gnu/libOpenGL.so OPENGL_glx_LIBRARY: /usr/lib/x86_64-linux-gnu/libGLX.so OpenGL_GL_PREFERENCE未设置为"GLVND"或"LEGACY",因此为了兼容CMake 3.10及更早版本,将使用旧版GL库。 调用栈(最近调用优先): CMakeLists.txt:338 (find_package) 此警告面向项目开发者。使用-Wno-dev可抑制。 -- 找到OpenGL:/usr/lib/x86_64-linux-gnu/libOpenGL.so -- 查找Q_WS_X11 -- 查找Q_WS_X11 - 找到 -- 查找Q_WS_WIN -- 查找Q_WS_WIN - 未找到 -- 查找Q_WS_QWS -- 查找Q_WS_QWS - 未找到 -- 查找Q_WS_MAC -- 查找Q_WS_MAC - 未找到 -- 找到Qt4:/usr/bin/qmake (找到合适版本 "4.8.7", 最低要求为 "4.4.3") -- 找到OMPL:/opt/ros/noetic/lib/x86_64-linux-gnu/libompl.so -- 找到Armadillo:/usr/lib/x86_64-linux-gnu/libarmadillo.so (找到版本 "9.800.4") -- 找到TinyXML:/usr/include CMake错误: 以下变量在项目中被使用,但被设置为NOTFOUND。 请设置它们或确保它们在CMake文件中被正确设置和测试: OMPLAPPBASE_LIBRARY 被目录/home/nishant/edpl-ompl中的目标"bsp-app-demo"链接 OMPLAPP_LIBRARY 被目录/home/nishant/edpl-ompl中的目标"bsp-app-demo"链接 被目录/home/nishant/edpl-ompl中的目标"bsp_lib"链接 -- 配置未完成,发生错误! 另请参阅 "/home/nishant/edpl-ompl/build/CMakeFiles/CMakeOutput.log"。 另请参阅 "/home/nishant/edpl-ompl/build/CMakeFiles/CMakeError.log"。
解决建议
- 确认OMPL App库是否安装
系统默认或ROS提供的OMPL包通常只包含核心库,OMPL App是额外的可视化/应用组件。需手动从源码编译安装OMPL,并在cmake时启用OMPL App:git clone https://github.com/ompl/ompl.git cd ompl && mkdir build && cd build cmake -DOMPL_BUILD_APP=ON .. make -j$(nproc) sudo make install - 手动指定库路径
如果已安装OMPL App但CMake无法自动找到,可在项目的CMakeLists.txt中手动设置路径:set(OMPLAPPBASE_LIBRARY "/usr/local/lib/libomplappbase.so") set(OMPLAPP_LIBRARY "/usr/local/lib/libomplapp.so") - 修复CMake策略警告(非致命,可选)
- 针对CMP0042:在CMakeLists.txt开头添加
cmake_policy(SET CMP0042 NEW),启用RPATH新行为 - 针对CMP0072:添加
set(OpenGL_GL_PREFERENCE "GLVND"),明确使用GLVND版本的OpenGL库
- 针对CMP0042:在CMakeLists.txt开头添加
内容的提问来源于stack exchange,提问作者Nishant pandey
相关产品推荐
相关产品推荐

