错误现象: 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编译所设置的路径一致即可,根据自己的路径配置而定。 这样便可以解决报错现象!
