128 lines
3.1 KiB
CMake
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()
|