cmake_minimum_required(VERSION 3.16) find_package(yaml-cpp REQUIRED) add_subdirectory(serial) # 创建目标 device set(DEVICE_SOURCES hikrobot/hikrobot.cpp mindvision/mindvision.cpp usbcamera/usbcamera.cpp camera.cpp cboard.cpp dm_imu/dm_imu.cpp gimbal/gimbal.cpp ) # 如果启用ROS2,添加ROS2版本的gimbal if(USE_ROS2) list(APPEND DEVICE_SOURCES gimbal/gimbal_ros.cpp) endif() add_library(device STATIC ${DEVICE_SOURCES}) # hikrobot target_include_directories(device PUBLIC hikrobot/include) if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") target_link_directories(device PUBLIC hikrobot/lib/amd64) elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64") target_link_directories(device PUBLIC hikrobot/lib/arm64) else() message(FATAL_ERROR "Unsupported architecture: ${CMAKE_HOST_SYSTEM_PROCESSOR}!") endif() # mindvision target_include_directories(device PUBLIC mindvision/include) if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") target_link_directories(device PUBLIC mindvision/lib/amd64) elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64") target_link_directories(device PUBLIC mindvision/lib/arm64) else() message(FATAL_ERROR "Unsupported architecture: ${CMAKE_HOST_SYSTEM_PROCESSOR}!") endif() target_link_libraries(device MvCameraControl MVSDK usb-1.0 yaml-cpp serial) # 如果启用ROS2,添加ROS2依赖 if(USE_ROS2) target_include_directories(device PUBLIC ${rclcpp_INCLUDE_DIRS} ${rm_msgs_INCLUDE_DIRS}) target_link_libraries(device ${rclcpp_LIBRARIES}) endif()