rm_vision/io/CMakeLists.txt
2025-12-15 02:33:20 +08:00

60 lines
1.9 KiB
CMake

cmake_minimum_required(VERSION 3.16)
find_package(yaml-cpp REQUIRED)
add_subdirectory(serial)
# 创建目标 io
add_library(io STATIC
hikrobot/hikrobot.cpp
mindvision/mindvision.cpp
usbcamera/usbcamera.cpp
camera.cpp
cboard.cpp
dm_imu/dm_imu.cpp
gimbal/gimbal.cpp
)
# hikrobot
target_include_directories(io PUBLIC hikrobot/include)
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
target_link_directories(io PUBLIC hikrobot/lib/amd64)
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
target_link_directories(io PUBLIC hikrobot/lib/arm64)
else()
message(FATAL_ERROR "Unsupported architecture: ${CMAKE_HOST_SYSTEM_PROCESSOR}!")
endif()
# mindvision
target_include_directories(io PUBLIC mindvision/include)
if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
target_link_directories(io PUBLIC mindvision/lib/amd64)
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
target_link_directories(io PUBLIC mindvision/lib/arm64)
else()
message(FATAL_ERROR "Unsupported architecture: ${CMAKE_HOST_SYSTEM_PROCESSOR}!")
endif()
target_link_libraries(io MvCameraControl MVSDK usb-1.0 yaml-cpp serial)
################## 检查 ROS 环境 ##################
find_package(ament_cmake QUIET)
find_package(rclcpp QUIET)
find_package(std_msgs QUIET)
find_package(rosidl_typesupport_cpp QUIET)
find_package(sp_msgs QUIET)
# 如果找不到 ROS 环境,则跳过 ROS 相关的部分
if(NOT ament_cmake_FOUND OR NOT rclcpp_FOUND OR NOT std_msgs_FOUND OR NOT rosidl_typesupport_cpp_FOUND OR NOT sp_msgs_FOUND)
message(WARNING "ROS2 not found, skipping ROS2 specific code.")
else()
message(STATUS "ROS2 environment found, compiling ROS2-related code.")
# 添加 ROS2 相关的文件
target_sources(io PRIVATE ros2/publish2nav.cpp ros2/ros2.cpp ros2/subscribe2nav.cpp)
# 设置 ROS2 依赖
include_directories(${std_msgs_INCLUDE_DIRS})
ament_target_dependencies(io rclcpp std_msgs sp_msgs)
endif()