60 lines
1.9 KiB
CMake
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()
|