cmake_minimum_required(VERSION 3.0.2)
project(invicta_remote)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

if(NOT CMAKE_BUILD_TYPE)
  set(CMAKE_BUILD_TYPE Release)
endif()

find_package(catkin REQUIRED COMPONENTS
  roscpp
  sensor_msgs
  invicta_msgs
  roslib
)

catkin_package(
  INCLUDE_DIRS include
  CATKIN_DEPENDS roscpp sensor_msgs invicta_msgs
)

# TOML 解析库：系统安装（见 README「依赖」），CMake 里体现为 required
find_package(tomlplusplus REQUIRED)
get_target_property(TOMLPLUSPLUS_INCLUDE_DIR tomlplusplus::tomlplusplus INTERFACE_INCLUDE_DIRECTORIES)
include_directories(${TOMLPLUSPLUS_INCLUDE_DIR})
# 以 header-only 方式使用：实现编进本节点，避免引入运行时动态库依赖（目标机无需部署 .so）
add_definitions(-DTOML_HEADER_ONLY=1)

include_directories(
  include
  ${catkin_INCLUDE_DIRS}
)

# 把本节点自己的配置头列进源列表：改该头会触发重编（改 TOML 不用重编）
set(NODE_CONFIG_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/include/invicta_remote/remote_config.h")
if(NOT EXISTS "${NODE_CONFIG_HEADER}")
  message(WARNING "invicta_remote_node: 找不到本节点配置头")
  set(NODE_CONFIG_HEADER "")
endif()

add_executable(invicta_remote_node
  src/invicta_remote_node.cpp
  ${NODE_CONFIG_HEADER}
)

target_link_libraries(invicta_remote_node
  ${catkin_LIBRARIES}
  -lpthread
)

install(TARGETS invicta_remote_node
  RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
install(DIRECTORY launch config
  DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
)
