cmake_minimum_required(VERSION 3.8)
project(serial_6dof_imu)

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  add_compile_options(-Wall -Wextra -Wpedantic)
endif()

find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(sensor_msgs REQUIRED)
find_package(std_msgs REQUIRED)
find_package(rosidl_default_generators REQUIRED)

rosidl_generate_interfaces(${PROJECT_NAME}
  "srv/GetYawData.srv"
  "srv/SetIICAddr.srv"
  "srv/SetYawZero.srv"
)

add_executable(serial_6dof_imu_node
  src/serial_imu_node.cpp
  src/proc_serial_data.cpp
)
target_include_directories(serial_6dof_imu_node PRIVATE include)
target_compile_features(serial_6dof_imu_node PUBLIC cxx_std_17)
ament_target_dependencies(serial_6dof_imu_node
  rclcpp
  sensor_msgs
  std_msgs
)

# 同一个包内的C++节点使用本包生成的srv类型时,需要显式链接rosidl typesupport.
rosidl_get_typesupport_target(cpp_typesupport_target ${PROJECT_NAME} "rosidl_typesupport_cpp")
target_link_libraries(serial_6dof_imu_node "${cpp_typesupport_target}")

install(TARGETS serial_6dof_imu_node
  DESTINATION lib/${PROJECT_NAME}
)

install(DIRECTORY cfg launch
  DESTINATION share/${PROJECT_NAME}
)

ament_export_dependencies(rosidl_default_runtime)
ament_package()
