CMakeLists.txt 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. cmake_minimum_required(VERSION 3.10)
  2. project(ndt_omp)
  3. add_definitions(-std=c++14)
  4. set(CMAKE_CXX_FLAGS "-std=c++14")
  5. if (BUILD_WITH_MARCH_NATIVE)
  6. add_compile_options(-march=native)
  7. else()
  8. add_definitions(-msse -msse2 -msse3 -msse4 -msse4.1 -msse4.2)
  9. set(CMAKE_CXX_FLAGS "-msse -msse2 -msse3 -msse4 -msse4.1 -msse4.2")
  10. endif()
  11. # pcl 1.7 causes a segfault when it is built with debug mode
  12. set(CMAKE_BUILD_TYPE "RELEASE")
  13. find_package(PCL 1.7 REQUIRED)
  14. include_directories(${PCL_INCLUDE_DIRS})
  15. link_directories(${PCL_LIBRARY_DIRS})
  16. add_definitions(${PCL_DEFINITIONS})
  17. message(STATUS "PCL_INCLUDE_DIRS:" ${PCL_INCLUDE_DIRS})
  18. message(STATUS "PCL_LIBRARY_DIRS:" ${PCL_LIBRARY_DIRS})
  19. message(STATUS "PCL_DEFINITIONS:" ${PCL_DEFINITIONS})
  20. find_package(OpenMP)
  21. if (OPENMP_FOUND)
  22. set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
  23. set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
  24. endif()
  25. if($ENV{ROS_VERSION} EQUAL 1)
  26. # ROS1
  27. find_package(catkin REQUIRED COMPONENTS
  28. roscpp
  29. pcl_ros
  30. )
  31. ###################################
  32. ## catkin specific configuration ##
  33. ###################################
  34. catkin_package(
  35. INCLUDE_DIRS include
  36. LIBRARIES ndt_omp
  37. )
  38. ###########
  39. ## Build ##
  40. ###########
  41. include_directories(include)
  42. include_directories(
  43. ${catkin_INCLUDE_DIRS}
  44. )
  45. add_library(ndt_omp
  46. src/pclomp/voxel_grid_covariance_omp.cpp
  47. src/pclomp/ndt_omp.cpp
  48. src/pclomp/gicp_omp.cpp
  49. )
  50. add_executable(align
  51. apps/align.cpp
  52. )
  53. add_dependencies(align
  54. ndt_omp
  55. )
  56. target_link_libraries(align
  57. ${catkin_LIBRARIES}
  58. ${PCL_LIBRARIES}
  59. ndt_omp
  60. )
  61. #############
  62. ## INSTALL ##
  63. #############
  64. install(
  65. TARGETS
  66. ndt_omp
  67. ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
  68. RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
  69. LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
  70. )
  71. # install headers
  72. install(DIRECTORY include/pclomp
  73. DESTINATION ${CATKIN_GLOBAL_INCLUDE_DESTINATION})
  74. else()
  75. # ROS2
  76. find_package(ament_cmake_auto REQUIRED)
  77. ament_auto_find_build_dependencies()
  78. ###########
  79. ## Build ##
  80. ###########
  81. include_directories(include)
  82. include_directories(
  83. ${catkin_INCLUDE_DIRS}
  84. )
  85. add_library(ndt_omp
  86. SHARED
  87. src/pclomp/voxel_grid_covariance_omp.cpp
  88. src/pclomp/ndt_omp.cpp
  89. src/pclomp/gicp_omp.cpp
  90. )
  91. ament_export_targets(ndt_omp HAS_LIBRARY_TARGET)
  92. target_link_libraries(ndt_omp ${PCL_LIBRARIES})
  93. if(OpenMP_CXX_FOUND)
  94. target_link_libraries(ndt_omp OpenMP::OpenMP_CXX)
  95. else()
  96. message(WARNING "OpenMP not found")
  97. endif()
  98. install(
  99. TARGETS
  100. ndt_omp
  101. EXPORT ndt_omp
  102. LIBRARY DESTINATION lib
  103. ARCHIVE DESTINATION lib
  104. RUNTIME DESTINATION bin
  105. INCLUDES DESTINATION include
  106. )
  107. ament_auto_package()
  108. endif()