BAD-SLAM配置环境报错:g2o::core无法链接
错误现象:
CMake Error at applications/badslam/CMakeLists.txt:158 (add_executable):
Target “badslam” links to target “g2o::core” but the target was not found.
Perhaps a find_package() call is missing for an IMPORTED target, or an
ALIAS target is missing?
CMake Error at applications/badslam/CMakeLists.txt:158 (add_executable):
Target “badslam” links to target “g2o::types_slam3d” but the target was not
found. Perhaps a find_package() call is missing for an IMPORTED target, or
an ALIAS target is missing?
CMake Error at applications/badslam/CMakeLists.txt:158 (add_executable):
Target “badslam” links to target “g2o::solver_csparse” but the target was
not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
CMake Error at applications/badslam/CMakeLists.txt:158 (add_executable):
Target “badslam” links to target “g2o::csparse_extension” but the target
was not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?
CMake Error at applications/badslam/CMakeLists.txt:158 (add_executable):
Target “badslam” links to target “g2o::stuff” but the target was not found.
Perhaps a find_package() call is missing for an IMPORTED target, or an
ALIAS target is missing?
解决办法:
根据错误提示,找到文件夹applications/badslam/目录下的CMakeLists.txt文件,打开文件。
由于g2o相关类别的错误(g2o:: …),于是可判断极有可能是库链接的问题,导致报错,更改该文件中的如下代码,便可解决问题:
将如下代码进行更改,
target_link_libraries(badslam_baselib
PRIVATE
opengv
g2o::core
g2o::types_slam3d
g2o::solver_csparse
g2o::csparse_extension
${SuiteSparse_LIBRARIES}
g2o::stuff
${OpenCV_LIBS}
${DLib_LIBS}
DBoW2
${realsense2_LIBRARY}
${OPENGL_LIBRARY}
${GLEW_LIBRARIES}
${X11_LIBRARIES}
${Boost_LIBRARIES}
PUBLIC
libvis
libvis_cuda
)
更改为:
target_link_libraries(badslam_baselib
PRIVATE
opengv
/home/bruce/software/g2o/lib/libg2o_core.so
/home/bruce/software/g2o/lib/libg2o_types_slam3d.so
/home/bruce/software/g2o/lib/libg2o_solver_csparse.so
/home/bruce/software/g2o/libg2o_csparse_extension.so
${SuiteSparse_LIBRARIES}
/home/bruce/software/g2o/lib/libg2o_stuff.so
${OpenCV_LIBS}
${DLib_LIBS}
DBoW2
${realsense2_LIBRARY}
${OPENGL_LIBRARY}
${GLEW_LIBRARIES}
${X11_LIBRARIES}
${Boost_LIBRARIES}
PUBLIC
libvis
libvis_cuda
)
或者:
target_link_libraries(badslam_baselib
PRIVATE
opengv
/usr/local/lib/libg2o_core.so
/usr/local/lib/libg2o_types_slam3d.so
/usr/local/lib/libg2o_solver_csparse.so
/usr/local/lib/libg2o_csparse_extension.so
${SuiteSparse_LIBRARIES}
/usr/local/lib/libg2o_stuff.so
${OpenCV_LIBS}
${DLib_LIBS}
DBoW2
${realsense2_LIBRARY}
${OPENGL_LIBRARY}
${GLEW_LIBRARIES}
${X11_LIBRARIES}
${Boost_LIBRARIES}
PUBLIC
libvis
libvis_cuda
)
与cmake编译所设置的路径一致即可,根据自己的路径配置而定。
这样便可以解决报错现象!