#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