diff --git a/src/vanjee/vanjee_lidar_sdk/CMakeLists.txt b/src/vanjee/vanjee_lidar_sdk/CMakeLists.txt index bd18055..f2be11c 100755 --- a/src/vanjee/vanjee_lidar_sdk/CMakeLists.txt +++ b/src/vanjee/vanjee_lidar_sdk/CMakeLists.txt @@ -2,10 +2,8 @@ cmake_minimum_required(VERSION 3.5) cmake_policy(SET CMP0048 NEW) project(vanjee_lidar_sdk) -#======================================= -# Compile Type (Release, Debug) -#======================================= -set(CMAKE_BUILD_TYPE "Release") +# Colcon packages must use the same configuration as generated ROS message +# targets. Forcing Release here makes vanjee_lidar_msg exports incompatible. #======================================= # Custom Point Type (XYZI, XYZIRT) @@ -105,8 +103,7 @@ if (CMAKE_BUILD_TYPE STREQUAL "Release") elseif (CMAKE_BUILD_TYPE STREQUAL "Debug") message("buile type: Debug") else () - set(CMAKE_BUILD_TYPE "Release") - message("buile type: Release") + message("buile type: Default") endif() if($ENV{ROS_DISTRO} STREQUAL "humble") # the ros2 humble requires c++17 @@ -203,8 +200,20 @@ if(rclcpp_FOUND AND ${COMPILE_METHOD} STREQUAL "COLCON") find_package(ament_cmake REQUIRED) find_package(sensor_msgs REQUIRED) - find_package(vanjee_lidar_msg REQUIRED) - find_package(std_msgs REQUIRED) + find_package(std_msgs REQUIRED) + + # The vendor package exports only NOCONFIG imported targets, which breaks + # find_package() when its nested driver selects Release. Use its generated + # message header and C++ typesupport library directly instead. + find_path(VANJEE_LIDAR_MSG_INCLUDE_DIR + NAMES vanjee_lidar_msg/msg/device_ctrl.hpp + PATH_SUFFIXES include/vanjee_lidar_msg) + find_library(VANJEE_LIDAR_MSG_TYPESUPPORT_CPP + NAMES vanjee_lidar_msg__rosidl_typesupport_cpp) + if(NOT VANJEE_LIDAR_MSG_INCLUDE_DIR OR NOT VANJEE_LIDAR_MSG_TYPESUPPORT_CPP) + message(FATAL_ERROR "vanjee_lidar_msg generated headers or typesupport library were not found") + endif() + include_directories(${VANJEE_LIDAR_MSG_INCLUDE_DIR}) else(rclcpp_FOUND AND ${COMPILE_METHOD} STREQUAL "COLCON") @@ -236,7 +245,8 @@ add_executable(vanjee_lidar_sdk_node target_link_libraries(vanjee_lidar_sdk_node ${YAML_CPP_LIBRARIES} - ${vanjee_driver_LIBRARIES}) + ${vanjee_driver_LIBRARIES} + ${VANJEE_LIDAR_MSG_TYPESUPPORT_CPP}) if(${ENABLE_TBB}) target_link_libraries(vanjee_lidar_sdk_node @@ -281,8 +291,7 @@ if(rclcpp_FOUND AND ${COMPILE_METHOD} STREQUAL "COLCON") ament_target_dependencies(vanjee_lidar_sdk_node rclcpp std_msgs - sensor_msgs - vanjee_lidar_msg) + sensor_msgs) install(TARGETS vanjee_lidar_sdk_node @@ -298,6 +307,3 @@ if(rclcpp_FOUND AND ${COMPILE_METHOD} STREQUAL "COLCON") ament_package() endif(rclcpp_FOUND AND ${COMPILE_METHOD} STREQUAL "COLCON") - - - diff --git a/src/yhs_can/yhs_can_control/CMakeLists.txt b/src/yhs_can/yhs_can_control/CMakeLists.txt index 2439586..3c7042c 100644 --- a/src/yhs_can/yhs_can_control/CMakeLists.txt +++ b/src/yhs_can/yhs_can_control/CMakeLists.txt @@ -14,7 +14,18 @@ find_package(nav2_msgs REQUIRED) find_package(tf2_msgs REQUIRED) find_package(tf2_ros REQUIRED) find_package(sensor_msgs REQUIRED) -find_package(yhs_can_interfaces REQUIRED) + +# yhs_can_interfaces is generated in the same isolated colcon workspace. +# Its vendor export exposes only NOCONFIG imported targets, so use the +# generated headers and C++ typesupport library directly. +find_path(YHS_CAN_INTERFACES_INCLUDE_DIR + NAMES yhs_can_interfaces/msg/io_cmd.hpp + PATH_SUFFIXES include/yhs_can_interfaces) +find_library(YHS_CAN_INTERFACES_TYPESUPPORT_CPP + NAMES yhs_can_interfaces__rosidl_typesupport_cpp) +if(NOT YHS_CAN_INTERFACES_INCLUDE_DIR OR NOT YHS_CAN_INTERFACES_TYPESUPPORT_CPP) + message(FATAL_ERROR "yhs_can_interfaces generated headers or typesupport library were not found") +endif() # --------------------------------------------------------- # 1. YHS Control Node (기존 드라이버) @@ -23,7 +34,8 @@ add_executable(yhs_can_control_node src/yhs_can_control_node.cpp) target_include_directories(yhs_can_control_node PUBLIC $ - $) + $ + ${YHS_CAN_INTERFACES_INCLUDE_DIR}) target_compile_features(yhs_can_control_node PUBLIC c_std_99 cxx_std_17) @@ -35,9 +47,11 @@ ament_target_dependencies(yhs_can_control_node tf2_msgs tf2_ros sensor_msgs - yhs_can_interfaces ) +target_link_libraries(yhs_can_control_node + ${YHS_CAN_INTERFACES_TYPESUPPORT_CPP}) + # --------------------------------------------------------- # 2. Mini Bridge Node (추가된 Translator) # ---------------------------------------------------------