CMakeLists.txt 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. cmake_minimum_required(VERSION 3.16)
  2. project(wheelchair_state_machine)
  3. # 默认使用C++17
  4. set(CMAKE_CXX_STANDARD 17)
  5. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  6. # 查找依赖包
  7. find_package(ament_cmake REQUIRED)
  8. find_package(rclcpp REQUIRED)
  9. find_package(std_msgs REQUIRED)
  10. find_package(geometry_msgs REQUIRED)
  11. find_package(sensor_msgs REQUIRED)
  12. find_package(visualization_msgs REQUIRED)
  13. find_package(tf2 REQUIRED)
  14. find_package(tf2_geometry_msgs REQUIRED)
  15. find_package(Eigen3 REQUIRED)
  16. find_package(interface REQUIRED)
  17. # 包含当前目录
  18. include_directories(
  19. ${CMAKE_CURRENT_SOURCE_DIR}/include
  20. ${Eigen3_INCLUDE_DIRS}
  21. )
  22. # 创建可执行文件
  23. add_executable(wheelchair_state_machine
  24. src/battery_manager.cpp
  25. src/recharge_controller.cpp
  26. src/main.cpp
  27. src/recharge_tool.cpp
  28. src/wheelchair_state_machine.cpp
  29. )
  30. # 使用 ament_target_dependencies 自动处理ROS2依赖
  31. ament_target_dependencies(wheelchair_state_machine
  32. rclcpp
  33. std_msgs
  34. geometry_msgs
  35. sensor_msgs
  36. visualization_msgs
  37. tf2
  38. tf2_geometry_msgs
  39. interface # 关键:这里添加interface依赖
  40. )
  41. # 链接Eigen3库(不是ROS2包,需要单独处理)
  42. target_include_directories(wheelchair_state_machine PRIVATE
  43. ${Eigen3_INCLUDE_DIRS}
  44. )
  45. target_link_libraries(wheelchair_state_machine
  46. Eigen3::Eigen
  47. )
  48. # 添加自定义头文件目录
  49. target_include_directories(wheelchair_state_machine PRIVATE
  50. include
  51. )
  52. # 安装可执行文件
  53. install(TARGETS wheelchair_state_machine
  54. RUNTIME DESTINATION lib/${PROJECT_NAME}
  55. )
  56. # 安装头文件(如果有需要)
  57. install(DIRECTORY include/
  58. DESTINATION include/${PROJECT_NAME}
  59. )
  60. ament_package()