CMakeLists.txt 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. cmake_minimum_required(VERSION 3.10)
  2. project(saturn_controller)
  3. # Default to C99
  4. if(NOT CMAKE_C_STANDARD)
  5. set(CMAKE_C_STANDARD 99)
  6. endif()
  7. # Default to C++17
  8. if(NOT CMAKE_CXX_STANDARD)
  9. set(CMAKE_CXX_STANDARD 17)
  10. endif()
  11. if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  12. add_compile_options(-Wall -Wextra -Wpedantic)
  13. endif()
  14. find_package(ament_cmake REQUIRED)
  15. find_package(spdlog REQUIRED)
  16. set(ROS_DEPENDS
  17. rclcpp
  18. rclcpp_components
  19. ysc_robot_msgs
  20. daystar_navigation_msgs
  21. saturn_msgs
  22. std_srvs
  23. )
  24. foreach(pkg_name IN LISTS ROS_DEPENDS)
  25. find_package(${pkg_name} REQUIRED)
  26. endforeach()
  27. include_directories(./sdk/include)
  28. include_directories(./include)
  29. if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
  30. message(STATUS "Building for 64-bit Linux on x86_64")
  31. set(SDK_PATH "${CMAKE_CURRENT_SOURCE_DIR}/sdk/lib/x86_64")
  32. elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
  33. message(STATUS "Building for 64-bit Linux on ARM64")
  34. set(SDK_PATH "${CMAKE_CURRENT_SOURCE_DIR}/sdk/lib/arm")
  35. endif()
  36. link_directories(${SDK_PATH})
  37. install(DIRECTORY ${SDK_PATH}/
  38. DESTINATION lib/
  39. )
  40. file(GLOB main_files src/*.cpp)
  41. add_library(saturn_controller_component SHARED src/saturn_controller.cpp ${main_files})
  42. target_link_libraries(saturn_controller_component spdlog::spdlog -lmc_client)
  43. ament_target_dependencies(saturn_controller_component ${ROS_DEPENDS})
  44. rclcpp_components_register_nodes(saturn_controller_component "saturn_ros2::SaturnController")
  45. install(TARGETS
  46. saturn_controller_component
  47. ARCHIVE DESTINATION lib
  48. LIBRARY DESTINATION lib
  49. RUNTIME DESTINATION lib/${PROJECT_NAME}/
  50. )
  51. install(DIRECTORY
  52. include/
  53. DESTINATION include/
  54. )
  55. install(DIRECTORY
  56. launch
  57. DESTINATION share/${PROJECT_NAME}/)
  58. install(DIRECTORY
  59. config
  60. DESTINATION share/${PROJECT_NAME}/
  61. )
  62. ament_package()