解决cmake 找不到 g2o 问题

#G2O
list(APPEND CMAKE_MODULE_PATH /usr/local/g2o2020/cmake_modules) 
#set(G2O_ROOT "/usr/local/g2o2020/")
set(CMAKE_PREFIX_PATH "/usr/local/g2o2020/")
find_package(G2O REQUIRED)
#include_directories(${G2O_INCLUDE_DIRS})
#这样写导致从默认/usr/local/include/g2o/找到其他版本g2o,导致冲突
include_directories(/usr/local/g2o2020/include/)

SET(G2O_LIBRARIES ${G2O_STUFF_LIBRARY} ${G2O_CORE_LIBRARY} ${G2O_CLI_LIBRARY} ${G2O_SOLVER_CHOLMOD} ${G2O_SOLVER_CSPARSE} ${G2O_SOLVER_CSPARSE_EXTENSION} 
${G2O_SOLVER_DENSE} ${G2O_SOLVER_PCG} ${G2O_SOLVER_SLAM2D_LINEAR} ${G2O_SOLVER_STRUCTURE_ONLY} ${G2O_SOLVER_EIGEN} ${G2O_TYPES_DATA} ${G2O_TYPES_ICP} ${G2O_TYPES_SBA}
${G2O_TYPES_SCLAM2D} ${G2O_TYPES_SIM3} ${G2O_TYPES_SLAM2D} ${G2O_TYPES_SLAM3D})

add_executable(xxx src/xxx.cpp)
target_link_libraries(xxx ${OpenCV_LIBS}  ${EIGEN3_LIBS} ${G2O_LIBRARIES} gomp)

源码安装了 g2o 到 /usr/local/g2o2020/

find_package 报错:

Cmake Error:By not providing “FindG2O.cmake” in CMAKE_MODULE_PATH

原因:cmake 需要 findg2o.cmake 指导来找到 g2o,而 findg2o.cmake 在 cmake_modules 文件夹中。

解决:cmake_modules 在源码里有,安装g2o后,安装目录中会有 cmake_modules 文件夹,有些人但我没有,于是,我将 cmake_modules 从源码里手动拷贝到安装目录 /usr/local/g2o2016/,并且把cmake_modules 中的 findg2o.cmake 内所有 “NO_DEFAULT_PATH” 注释掉,据说不注释掉 set 不生效。

找不到 omp 报错:undefined reference to symbol 'omp_set_lock@@OMP_3.0

解决:target_link_libraries 加 gomp 或 -lgomp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值