cmake_minimum_required(VERSION 3.0.2)
project(rc_receiver)

# 查找必要的catkin组件
find_package(catkin REQUIRED COMPONENTS
  roscpp
  serial
  std_msgs
  sensor_msgs
  message_generation
)

# 声明消息文件（位于msg/rc.msg）
add_message_files(
  FILES
  rc.msg
)

# 生成消息文件，依赖std_msgs
generate_messages(
  DEPENDENCIES
  std_msgs
)

# 配置catkin包
catkin_package(
  INCLUDE_DIRS include
  LIBRARIES rc_receiver
  CATKIN_DEPENDS roscpp serial std_msgs message_runtime sensor_msgs
  DEPENDS system_lib
)

# 包含头文件路径
include_directories(
  include
  ${catkin_INCLUDE_DIRS}
)

# 编译可执行文件
add_executable(rc_receiver_node
  src/rc_receiver_node.cpp
)

# 添加消息生成依赖，确保先生成消息再编译可执行文件
add_dependencies(rc_receiver_node
  ${${PROJECT_NAME}_EXPORTED_TARGETS}
  ${catkin_EXPORTED_TARGETS}
)

# 链接依赖库
target_link_libraries(rc_receiver_node
  ${catkin_LIBRARIES}
)

# 安装可执行文件
install(TARGETS rc_receiver_node
  RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

# 安装头文件
install(DIRECTORY include/${PROJECT_NAME}/
  DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
  FILES_MATCHING PATTERN "*.h"
  PATTERN ".svn" EXCLUDE
)
