sweeper_200/src/perception/rslidar_pointcloud_merger/CMakeLists.txt
2026-04-13 07:24:32 +08:00

89 lines
2.2 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

cmake_minimum_required(VERSION 3.8)
cmake_policy(SET CMP0074 NEW)
project(rslidar_pointcloud_merger)
# 1. 默认开启 C++17
if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 17)
endif()
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
add_compile_options(-w) # 禁用所有警告
endif()
# 检查是否启用GPU加速
option(USE_GPU "Enable GPU acceleration (requires CUDA)" ON)
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(sensor_msgs REQUIRED)
find_package(pcl_conversions REQUIRED)
find_package(pcl_ros REQUIRED)
find_package(tf2 REQUIRED)
find_package(tf2_ros REQUIRED)
find_package(tf2_sensor_msgs REQUIRED)
find_package(PCL REQUIRED COMPONENTS common io segmentation filters)
find_package(mc REQUIRED)
find_package(logger REQUIRED)
# GPU加速相关配置
if(USE_GPU)
message(STATUS "GPU acceleration enabled")
enable_language(CUDA)
# 设置CUDA架构Orin使用sm_87
set(CMAKE_CUDA_ARCHITECTURES "87")
# 查找CUDA
find_package(CUDAToolkit QUIET)
if(CUDAToolkit_FOUND)
message(STATUS "CUDAToolkit found: ${CUDAToolkit_VERSION}")
add_definitions(-DUSE_GPU)
include_directories(${CUDAToolkit_INCLUDE_DIRS})
else()
message(WARNING "CUDAToolkit not found, GPU acceleration disabled")
set(USE_GPU OFF)
endif()
endif()
include_directories(include ${PCL_INCLUDE_DIRS})
# 源文件列表
set(SOURCES src/merge_two_lidars.cpp)
# 如果启用GPU添加GPU源文件
if(USE_GPU)
list(APPEND SOURCES src/gpu_processing.cu)
endif()
add_executable(merge_two_lidars ${SOURCES})
ament_target_dependencies(
merge_two_lidars
rclcpp
sensor_msgs
pcl_conversions
pcl_ros
tf2
tf2_ros
tf2_sensor_msgs
mc
logger)
target_link_libraries(merge_two_lidars ${PCL_LIBRARIES})
# GPU加速链接库
if(USE_GPU)
target_link_libraries(merge_two_lidars CUDA::cudart)
if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL 11.0)
target_compile_features(merge_two_lidars PRIVATE cuda_std_17)
else()
target_compile_features(merge_two_lidars PRIVATE cuda_std_14)
endif()
endif()
install(TARGETS merge_two_lidars DESTINATION lib/${PROJECT_NAME})
install(DIRECTORY launch config DESTINATION share/${PROJECT_NAME})
ament_package()