OpenREALM_ROS1_Bridge编译报错Boost::filesystem与FLANN::FLANN未找到
问题原因
该报错是因为realm_ros包的CMakeLists.txt未正确配置Boost.filesystem和FLANN依赖的导入目标,导致CMake链接时找不到对应的库配置,可按以下步骤修复:
1. 安装系统依赖
首先确保两个依赖的开发包已安装,Ubuntu系统执行以下命令:
sudo apt update && sudo apt install libboost-filesystem-dev libflann-dev
2. 修改realm_ros的CMake配置
找到工作空间下的src/OpenREALM_ROS1_Bridge/realm_ros/CMakeLists.txt文件,在文件开头的find_package配置区域(位于project指令之后)补充以下内容:
# 查找Boost.filesystem依赖 find_package(Boost REQUIRED COMPONENTS filesystem) # 兼容老版本Boost无导入目标的情况 if(NOT TARGET Boost::filesystem) add_library(Boost::filesystem UNKNOWN IMPORTED) set_target_properties(Boost::filesystem PROPERTIES IMPORTED_LOCATION "${Boost_FILESYSTEM_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${Boost_INCLUDE_DIRS}" ) endif() # 查找FLANN依赖 find_package(FLANN REQUIRED) # 兼容FLANN无导入目标的情况 if(NOT TARGET FLANN::FLANN) add_library(FLANN::FLANN UNKNOWN IMPORTED) set_target_properties(FLANN::FLANN PROPERTIES IMPORTED_LOCATION "${FLANN_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${FLANN_INCLUDE_DIRS}" ) endif()
3. 清理缓存重新编译
在catkin工作空间根目录执行以下命令清理错误编译缓存,再重新执行编译命令:
rm -rf build devel catkin_make -DCMAKE_BUILD_TYPE=Release
如果你的Boost或FLANN是源码编译安装到自定义路径的,编译时补充前缀路径参数即可:catkin_make -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="/你的Boost安装路径;/你的FLANN安装路径"
内容的提问来源于stack exchange,提问作者MatrixUnibo
相关产品推荐
相关产品推荐

