CMakeLists.txt 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. cmake_minimum_required(VERSION 3.0.2)
  2. project(slam_hdl_graph)
  3. add_compile_options(-std=c++11)
  4. find_package(catkin REQUIRED COMPONENTS
  5. laser_geometry
  6. fast_gicp
  7. geodesy
  8. geometry_msgs
  9. interactive_markers
  10. message_generation
  11. ndt_omp
  12. nmea_msgs
  13. pcl_ros
  14. roscpp
  15. rospy
  16. sensor_msgs
  17. std_msgs
  18. tf_conversions
  19. )
  20. set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/cmake") # 帮助找到 FindG2O.cmake 文件
  21. catkin_python_setup()
  22. #find_package(Boost REQUIRED COMPONENTS system)
  23. catkin_package(
  24. # INCLUDE_DIRS include
  25. # LIBRARIES slam
  26. # CATKIN_DEPENDS roscpp
  27. # DEPENDS system_lib
  28. )
  29. find_package(PCL REQUIRED)
  30. include_directories(${PCL_INCLUDE_DIRS})
  31. link_directories(${PCL_LIBRARY_DIRS})
  32. add_definitions(${PCL_DEFINITIONS})
  33. message(STATUS "PCL_INCLUDE_DIRS:" ${PCL_INCLUDE_DIRS})
  34. message(STATUS "PCL_LIBRARY_DIRS:" ${PCL_LIBRARY_DIRS})
  35. message(STATUS "PCL_DEFINITIONS:" ${PCL_DEFINITIONS})
  36. find_package(G2O REQUIRED)
  37. include_directories(SYSTEM ${G2O_INCLUDE_DIR} ${G2O_INCLUDE_DIRS})
  38. link_directories(${G2O_LIBRARY_DIRS})
  39. link_libraries(${G2O_LIBRARIES})
  40. find_package(OpenMP)
  41. if (OPENMP_FOUND)
  42. set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
  43. set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
  44. endif()
  45. find_library(VGICP_CUDA_FOUND NAMES fast_vgicp_cuda)
  46. message(STATUS "VGICP_CUDA_FOUND:" ${VGICP_CUDA_FOUND})
  47. if(VGICP_CUDA_FOUND)
  48. add_definitions(-DUSE_VGICP_CUDA)
  49. endif()
  50. find_package(ndt_omp REQUIRED)
  51. # find_package(PCL REQUIRED)
  52. # find_package(G2O REQUIRED)
  53. include_directories(SYSTEM ${G2O_INCLUDE_DIR} ${G2O_INCLUDE_DIRS})
  54. link_directories(${G2O_LIBRARY_DIRS})
  55. link_libraries(${G2O_LIBRARIES})
  56. include_directories(
  57. ${catkin_INCLUDE_DIRS}
  58. )
  59. # add_executable(${PROJECT_NAME}_node src/slam_node.cpp)
  60. add_executable(odom_laser_node src/odom_laser/odom_laser.cpp)
  61. target_link_libraries(odom_laser_node
  62. ${catkin_LIBRARIES}
  63. ${PCL_LIBRARIES}
  64. )
  65. add_executable(laser2cloud_node src/slam_hdl_graph/laser2cloud.cpp)
  66. # add_library(laser_odom src/laser_odom.cpp)
  67. target_link_libraries(laser2cloud_node
  68. ${catkin_LIBRARIES}
  69. ${PCL_LIBRARIES}
  70. )
  71. # add_executable(slam_hdl_graph_node src/slam_hdl_graph/slam_hdl_graph.cpp)
  72. add_executable(slam_hdl_graph_node
  73. src/slam_hdl_graph/slam_hdl_graph.cpp
  74. src/slam_hdl_graph/hdl_graph_slam/map_cloud_generator.cpp
  75. src/slam_hdl_graph/hdl_graph_slam/information_matrix_calculator.cpp
  76. src/slam_hdl_graph/hdl_graph_slam/graph_slam.cpp
  77. src/slam_hdl_graph/hdl_graph_slam/keyframe.cpp
  78. src/slam_hdl_graph/hdl_graph_slam/registrations.cpp
  79. src/slam_hdl_graph/g2o/robust_kernel_io.cpp
  80. )
  81. add_library(slam_hdl_graph_lib
  82. src/slam_hdl_graph/slam_hdl_graph.cpp
  83. src/slam_hdl_graph/hdl_graph_slam/map_cloud_generator.cpp
  84. src/slam_hdl_graph/hdl_graph_slam/information_matrix_calculator.cpp
  85. src/slam_hdl_graph/hdl_graph_slam/graph_slam.cpp
  86. src/slam_hdl_graph/hdl_graph_slam/keyframe.cpp
  87. src/slam_hdl_graph/hdl_graph_slam/registrations.cpp
  88. src/slam_hdl_graph/g2o/robust_kernel_io.cpp
  89. )
  90. target_link_libraries(slam_hdl_graph_node
  91. ${catkin_LIBRARIES}
  92. ${PCL_LIBRARIES}
  93. ${G2O_TYPES_DATA}
  94. ${G2O_CORE_LIBRARY}
  95. ${G2O_STUFF_LIBRARY}
  96. ${G2O_SOLVER_PCG}
  97. ${G2O_SOLVER_CSPARSE} # be aware of that CSPARSE is released under LGPL
  98. ${G2O_SOLVER_CHOLMOD} # be aware of that cholmod is released under GPL
  99. ${G2O_TYPES_SLAM3D}
  100. ${G2O_TYPES_SLAM3D_ADDONS}
  101. glog
  102. )
  103. target_link_libraries(slam_hdl_graph_lib
  104. ${catkin_LIBRARIES}
  105. ${PCL_LIBRARIES}
  106. ${G2O_TYPES_DATA}
  107. ${G2O_CORE_LIBRARY}
  108. ${G2O_STUFF_LIBRARY}
  109. ${G2O_SOLVER_PCG}
  110. ${G2O_SOLVER_CSPARSE} # be aware of that CSPARSE is released under LGPL
  111. ${G2O_SOLVER_CHOLMOD} # be aware of that cholmod is released under GPL
  112. ${G2O_TYPES_SLAM3D}
  113. ${G2O_TYPES_SLAM3D_ADDONS}
  114. glog
  115. )
  116. ###########
  117. ## Build ##
  118. ###########
  119. include_directories(include) # vscode 可以找到头文件,但是编译找不到,在这行括号中加 include 即可
  120. include_directories(
  121. ${PCL_INCLUDE_DIRS}
  122. ${catkin_INCLUDE_DIRS}
  123. )