CMakeLists.txt 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. cmake_minimum_required(VERSION 2.8.3)
  2. project(astra_camera)
  3. find_package(catkin REQUIRED camera_info_manager dynamic_reconfigure image_transport nodelet sensor_msgs roscpp message_generation)
  4. find_package(Boost REQUIRED COMPONENTS system thread)
  5. if(MSVC64 OR MINGW64)
  6. set(X86_64 1)
  7. elseif(MINGW OR (MSVC AND NOT CMAKE_CROSSCOMPILING))
  8. set(X86 1)
  9. elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*")
  10. set(X86_64 1)
  11. elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*|amd64.*|AMD64.*")
  12. set(X86 1)
  13. elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm.*|ARM.*)")
  14. set(ARM 1)
  15. elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*)")
  16. set(AARCH64 1)
  17. endif()
  18. if(ARM OR AARCH64)
  19. option(FILTER "OB Filter library" OFF)
  20. else()
  21. option(FILTER "OB Filter library" ON)
  22. endif()
  23. message(STATUS "arm is ${ARM}, aarch is ${AARCH64}, x86 is ${X86}, x64 is ${X86_64}, filter is ${FILTER}")
  24. if( ${FILTER} STREQUAL "ON" )
  25. set(obfilter "On")
  26. else()
  27. set(obfilter "Off")
  28. endif()
  29. include(ExternalProject)
  30. ExternalProject_Add(astra_openni2
  31. PREFIX astra_openni2
  32. # SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/astra_openni2/OpenNI2
  33. GIT_REPOSITORY https://github.com/orbbec/OpenNI2.git
  34. GIT_TAG orbbec_ros
  35. CONFIGURE_COMMAND echo "no need to configure"
  36. BUILD_IN_SOURCE 1
  37. BUILD_COMMAND make release FILTER=${obfilter}
  38. INSTALL_DIR openni2
  39. INSTALL_COMMAND tar -xjf <SOURCE_DIR>/Packaging/Final/OpenNI-Linux-2.3.tar.bz2 -C <INSTALL_DIR> --strip 1 && mkdir -p <INSTALL_DIR>/include && ln -fs <INSTALL_DIR>/Include <INSTALL_DIR>/include/openni2
  40. )
  41. generate_dynamic_reconfigure_options(cfg/Astra.cfg)
  42. add_service_files(FILES
  43. GetSerial.srv)
  44. generate_messages()
  45. catkin_package(
  46. INCLUDE_DIRS include
  47. LIBRARIES astra_wrapper
  48. CATKIN_DEPENDS camera_info_manager dynamic_reconfigure image_transport nodelet sensor_msgs roscpp message_runtime
  49. #DEPENDS libastra
  50. )
  51. link_directories(${CMAKE_CURRENT_BINARY_DIR}/openni2/Redist)
  52. include_directories(include
  53. ${catkin_INCLUDE_DIRS}
  54. ${Boost_INCLUDE_DIRS}
  55. ${CMAKE_CURRENT_BINARY_DIR}/openni2/include
  56. )
  57. add_library(astra_wrapper
  58. src/astra_convert.cpp
  59. src/astra_device.cpp
  60. src/astra_device_info.cpp
  61. src/astra_timer_filter.cpp
  62. src/astra_frame_listener.cpp
  63. src/astra_device_manager.cpp
  64. src/astra_exception.cpp
  65. src/astra_video_mode.cpp
  66. )
  67. target_link_libraries(astra_wrapper ${catkin_LIBRARIES} -lOpenNI2Orbbec
  68. ${Boost_LIBRARIES} )
  69. add_dependencies(astra_wrapper ${PROJECT_NAME}_gencfg astra_openni2 ${PROJECT_NAME}_generate_messages_cpp)
  70. add_library(astra_driver_lib
  71. src/astra_driver.cpp
  72. )
  73. target_link_libraries(astra_driver_lib astra_wrapper ${catkin_LIBRARIES} ${Boost_LIBRARIES} )
  74. add_dependencies(astra_driver_lib astra_openni2 ${PROJECT_NAME}_gencfg ${PROJECT_NAME}_generate_messages_cpp)
  75. add_library(astra_camera_nodelet
  76. ros/astra_camera_nodelet.cpp
  77. )
  78. target_link_libraries(astra_camera_nodelet astra_driver_lib ${catkin_LIBRARIES} ${Boost_LIBRARIES} )
  79. add_dependencies(astra_camera_nodelet astra_openni2 ${PROJECT_NAME}_gencfg)
  80. add_executable(astra_camera_node
  81. ros/astra_camera_node.cpp
  82. )
  83. target_link_libraries(astra_camera_node astra_driver_lib ${catkin_LIBRARIES} ${Boost_LIBRARIES} )
  84. add_dependencies(astra_camera_node astra_openni2 ${PROJECT_NAME}_gencfg ${PROJECT_NAME}_generate_messages_cpp)
  85. add_executable(astra_list_devices
  86. src/list_devices.cpp
  87. )
  88. target_link_libraries(astra_list_devices astra_wrapper)
  89. add_executable(astra_test_wrapper test/test_wrapper.cpp )
  90. target_link_libraries(astra_test_wrapper astra_wrapper ${Boost_LIBRARIES})
  91. if (UNIX AND NOT APPLE)
  92. add_executable(astra_usb_reset src/usb_reset.c)
  93. set(ADDITIONAL_EXECUTABLES "astra_usb_reset")
  94. endif()
  95. install(TARGETS astra_wrapper astra_camera_nodelet astra_camera_node astra_list_devices astra_driver_lib ${ADDITIONAL_EXECUTABLES}
  96. ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
  97. LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
  98. RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
  99. )
  100. install(FILES ${CMAKE_CURRENT_BINARY_DIR}/openni2/Redist/libOpenNI2Orbbec.so
  101. DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}/
  102. )
  103. install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/openni2/Redist/OpenNI2
  104. DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}/
  105. )
  106. install(DIRECTORY include/${PROJECT_NAME}/
  107. DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
  108. )
  109. # add xml file
  110. install(FILES astra_nodelets.xml
  111. DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
  112. )