在CMakeLists.txt中使用find_package(g2o REQUIRED)查找g2o的库发现${g2o_INCLUDE_DIRS} 和
${g2o_LIBRARIES}两个值均为空,由于g2o包使用make install 安装时,默认安装在/usr/local/下,
它的头文件cmake可以直接找到,但是需要指定需要链接的库文件。
在/usr/local/lib/cmake/g2o/g2oTargets.cmake文件中可以看出个g2o的库分为多个模块,按需引入
模块对应的名字即可。
CMakeLists.txt做如下修改后解决问题:
find_package(g2o REQUIRED)
target_link_libraries(test_g2o_icp
g2o::freeglut_minimal
g2o::stuff
g2o::opengl_helper
g2o::core
g2o::g2o_cli_library
g2o::g2o_hierarchical_library
g2o::g2o_simulator_library
g2o::types_data
g2o::types_slam2d
g2o::types_slam3d
g2o::types_sba
g2o::types_sim3
g2o::types_icp
g2o::types_sclam2d
g2o::types_slam2d_addons
g2o::types_slam3d_addons
g2o::solver_pcg
g2o::solver_dense
g2o::solver_structure_only
g2o::solver_csparse
g2o::csparse_extension
g2o::solver_slam2d_linear
g2o::solver_cholmod
g2o::solver_eigen
)