CMakeLists.txt 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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/event_input.cpp
  25. src/workflow.cpp
  26. src/lidascan_ctrl.cpp
  27. src/report.cpp
  28. src/main.cpp
  29. src/recharge_tool.cpp
  30. src/ipad_manager.cpp
  31. src/battery_manager.cpp
  32. )
  33. # 使用 ament_target_dependencies 自动处理ROS2依赖
  34. ament_target_dependencies(wheelchair_state_machine
  35. rclcpp
  36. std_msgs
  37. geometry_msgs
  38. sensor_msgs
  39. visualization_msgs
  40. tf2
  41. tf2_geometry_msgs
  42. interface # 关键:这里添加interface依赖
  43. )
  44. # 链接Eigen3库(不是ROS2包,需要单独处理)
  45. target_include_directories(wheelchair_state_machine PRIVATE
  46. ${Eigen3_INCLUDE_DIRS}
  47. )
  48. target_link_libraries(wheelchair_state_machine
  49. Eigen3::Eigen
  50. )
  51. # 添加自定义头文件目录
  52. target_include_directories(wheelchair_state_machine PRIVATE
  53. include
  54. )
  55. # 安装可执行文件
  56. install(TARGETS wheelchair_state_machine
  57. RUNTIME DESTINATION lib/${PROJECT_NAME}
  58. )
  59. # 安装头文件(如果有需要)
  60. install(DIRECTORY include/
  61. DESTINATION include/${PROJECT_NAME}
  62. )
  63. ament_package()