cmake_minimum_required(VERSION 3.10) project(m20_sdk_deploy) # 设置C++标准 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 默认构建类型 if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif() # 警告忽略和编译选项 add_definitions(-w) add_compile_options(-fPIC) # 配置选项 set(BUILD_PLATFORM "x86" CACHE STRING "Target platform (x86 or arm)") if(BUILD_PLATFORM STREQUAL "arm") set(CMAKE_C_COMPILER "aarch64-linux-gnu-gcc") set(CMAKE_CXX_COMPILER "aarch64-linux-gnu-g++") endif() # 查找依赖包 find_package(ament_cmake REQUIRED) find_package(rclcpp REQUIRED) find_package(drdds REQUIRED) set(THIRD_PARTY ${CMAKE_CURRENT_SOURCE_DIR}/third_party) include_directories( include/types include/utils interface/robot interface/user_command interface/network state_machine run_policy ${THIRD_PARTY}/eigen/ ${THIRD_PARTY}/gamepad/include ${THIRD_PARTY}/onnxruntime/${BUILD_PLATFORM}/include ) # 子目录 add_subdirectory(interface) # Keep the default RUNPATH behavior so a correctly sourced ROS environment can # override stale build-machine library paths when necessary. set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) set(CMAKE_INSTALL_RPATH ${THIRD_PARTY}/onnxruntime/${BUILD_PLATFORM}/lib/ ../lib/onnxruntime/ ) file(GLOB_RECURSE STATE_MACHINE_SRC "state_machine/*.c*") add_executable(rl_deploy main.cpp ${STATE_MACHINE_SRC}) add_library(onnxruntime SHARED IMPORTED) set_target_properties(onnxruntime PROPERTIES IMPORTED_LOCATION "${THIRD_PARTY}/onnxruntime//${BUILD_PLATFORM}/lib/libonnxruntime.so") ament_target_dependencies(rl_deploy rclcpp drdds ) if(BUILD_PLATFORM STREQUAL "arm") target_link_libraries(rl_deploy interface onnxruntime -lpthread -lm -lrt -ldl -lstdc++ ) else() target_link_libraries(rl_deploy interface onnxruntime -lpthread -lm -lrt -ldl -lstdc++ ) endif() install(TARGETS rl_deploy DESTINATION lib/${PROJECT_NAME} ) ament_package()