TIAN-LEIDA-JIANCE/CMakeLists.txt

152 lines
3.7 KiB
CMake
Raw Normal View History

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})