cmake_minimum_required(VERSION 3.16) project(yushu_leida) # 设置C++标准 set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 查找PCL find_package(PCL REQUIRED) # 查找yaml-cpp find_package(yaml-cpp REQUIRED) # 设置Unitree SDK路径 set(UNITREE_SDK_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/unilidar_sdk-main/unilidar_sdk-main/unitree_lidar_sdk") # 检查路径是否存在 if(NOT EXISTS "${UNITREE_SDK_ROOT}") message(FATAL_ERROR "Unitree SDK not found at: ${UNITREE_SDK_ROOT}") endif() # 检测系统架构 if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64") set(ARCH_DIR "x86_64") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64") set(ARCH_DIR "aarch64") else() message(FATAL_ERROR "Unsupported architecture: ${CMAKE_SYSTEM_PROCESSOR}") endif() # 设置库路径 set(UNITREE_LIB_DIR "${UNITREE_SDK_ROOT}/lib/${ARCH_DIR}") set(UNITREE_LIB_PATH "${UNITREE_LIB_DIR}/libunitree_lidar_sdk.a") # 检查库文件是否存在 if(NOT EXISTS "${UNITREE_LIB_PATH}") message(FATAL_ERROR "Unitree library not found at: ${UNITREE_LIB_PATH}") endif() # 先定义可执行文件目标 # 原版程序 add_executable(yushu_leida src/main.cpp src/unitree_driver.cpp # 只包含真实驱动 # 不包含 src/ubuntu_simulator_driver.cpp ) # 修复版程序 - 包含连续预警系统 add_executable(yushu_leida_fixed src/main.cpp src/unitree_driver.cpp ) # 雷达数据调试工具 add_executable(debug_radar_real_data debug_radar_real_data.cpp src/unitree_driver.cpp ) # 改进版程序 - 基于参考项目优化 add_executable(yushu_leida_improved src/main_improved.cpp src/unitree_driver.cpp ) # 添加增强图形界面版本 add_executable(yushu_leida_enhanced_gui src/main_improved.cpp src/unitree_driver.cpp # src/enhanced_ui_display.cpp # 移除这行,因为文件不存在 ) # 设置包含目录 target_include_directories(yushu_leida_enhanced_gui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ${UNITREE_SDK_ROOT}/include ${PCL_INCLUDE_DIRS} ) # 链接库 target_link_libraries(yushu_leida_enhanced_gui ${UNITREE_LIB_PATH} ${PCL_LIBRARIES} yaml-cpp pthread ) # 添加编译定义 target_compile_definitions(yushu_leida_enhanced_gui PRIVATE ${PCL_DEFINITIONS} ) target_include_directories(yushu_leida PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ${UNITREE_SDK_ROOT}/include ${PCL_INCLUDE_DIRS} ) target_include_directories(yushu_leida_improved PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ${UNITREE_SDK_ROOT}/include ${PCL_INCLUDE_DIRS} ) target_include_directories(yushu_leida_fixed PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ${UNITREE_SDK_ROOT}/include ${PCL_INCLUDE_DIRS} ) target_include_directories(debug_radar_real_data PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ${UNITREE_SDK_ROOT}/include ${PCL_INCLUDE_DIRS} ) # 链接库 target_link_libraries(yushu_leida ${UNITREE_LIB_PATH} # 直接使用静态库的完整路径 ${PCL_LIBRARIES} yaml-cpp pthread ) target_link_libraries(yushu_leida_improved ${UNITREE_LIB_PATH} # 直接使用静态库的完整路径 ${PCL_LIBRARIES} yaml-cpp pthread ) target_link_libraries(yushu_leida_fixed ${UNITREE_LIB_PATH} # 直接使用静态库的完整路径 ${PCL_LIBRARIES} yaml-cpp pthread ) target_link_libraries(debug_radar_real_data ${UNITREE_LIB_PATH} # 直接使用静态库的完整路径 ${PCL_LIBRARIES} yaml-cpp pthread ) # 设置PCL编译定义 target_compile_definitions(yushu_leida PRIVATE ${PCL_DEFINITIONS}) target_compile_definitions(yushu_leida_improved PRIVATE ${PCL_DEFINITIONS}) target_compile_definitions(yushu_leida_fixed PRIVATE ${PCL_DEFINITIONS})