Files
flyLink/skylink_ros2/src/skylink_bridge/CMakeLists.txt
flowerstonezl 056289625c init
2026-01-19 17:08:49 +08:00

128 lines
3.1 KiB
CMake

cmake_minimum_required(VERSION 3.16)
project(skylink_bridge LANGUAGES CXX)
# ============================================================================
# 编译标准和优化选项
# ============================================================================
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
# 如果未指定编译类型,默认为 Release
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
endif()
# ============================================================================
# 查找依赖
# ============================================================================
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(sensor_msgs REQUIRED)
find_package(geometry_msgs REQUIRED)
find_package(cv_bridge REQUIRED)
find_package(image_transport REQUIRED)
find_package(mavros_msgs REQUIRED)
# OpenCV
find_package(OpenCV REQUIRED COMPONENTS core imgproc)
# JPEG 库
find_package(JPEG REQUIRED)
# 线程库
find_package(Threads REQUIRED)
# ============================================================================
# 包含目录
# ============================================================================
include_directories(
include
${CMAKE_SOURCE_DIR}/../../protocol # 公共协议定义
)
# ============================================================================
# 源文件
# ============================================================================
set(SOURCES
src/udp_sender_node.cpp
)
set(HEADERS
include/skylink_bridge/udp_sender_node.hpp
)
# ============================================================================
# 创建节点可执行文件
# ============================================================================
add_executable(udp_sender_node ${SOURCES} ${HEADERS})
# 链接库
target_link_libraries(udp_sender_node
${rclcpp_LIBRARIES}
${sensor_msgs_LIBRARIES}
${geometry_msgs_LIBRARIES}
${cv_bridge_LIBRARIES}
${image_transport_LIBRARIES}
${mavros_msgs_LIBRARIES}
${OpenCV_LIBRARIES}
${JPEG_LIBRARIES}
Threads::Threads
)
# 目标级别的包含目录
ament_target_dependencies(udp_sender_node
rclcpp
sensor_msgs
geometry_msgs
cv_bridge
image_transport
mavros_msgs
)
# ============================================================================
# 安装规则
# ============================================================================
# 安装可执行文件
install(TARGETS udp_sender_node
DESTINATION lib/${PROJECT_NAME}
)
# 安装启动文件
install(DIRECTORY launch/
DESTINATION share/${PROJECT_NAME}/launch
)
# 安装配置文件
install(DIRECTORY config/
DESTINATION share/${PROJECT_NAME}/config
)
# 安装头文件
install(DIRECTORY include/
DESTINATION include
)
# ============================================================================
# Ament 导出
# ============================================================================
ament_export_targets(${PROJECT_NAME}_export HAS_LIBRARY_TARGET)
ament_export_dependencies(
rclcpp
sensor_msgs
geometry_msgs
cv_bridge
image_transport
mavros_msgs
OpenCV
)
ament_package()