cmake_minimum_required(VERSION 3.16) project(wheelchair_state_machine) # 默认使用C++17 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 查找依赖包 find_package(ament_cmake REQUIRED) find_package(rclcpp REQUIRED) find_package(std_msgs REQUIRED) find_package(geometry_msgs REQUIRED) find_package(sensor_msgs REQUIRED) find_package(visualization_msgs REQUIRED) find_package(tf2 REQUIRED) find_package(tf2_geometry_msgs REQUIRED) find_package(Eigen3 REQUIRED) find_package(interface REQUIRED) # 包含当前目录 include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/include ${Eigen3_INCLUDE_DIRS} ) # 创建可执行文件 add_executable(wheelchair_state_machine src/event_input.cpp src/workflow.cpp src/lidascan_ctrl.cpp src/report.cpp src/main.cpp src/recharge_tool.cpp src/ipad_manager.cpp src/battery_manager.cpp ) # 使用 ament_target_dependencies 自动处理ROS2依赖 ament_target_dependencies(wheelchair_state_machine rclcpp std_msgs geometry_msgs sensor_msgs visualization_msgs tf2 tf2_geometry_msgs interface # 关键:这里添加interface依赖 ) # 链接Eigen3库(不是ROS2包,需要单独处理) target_include_directories(wheelchair_state_machine PRIVATE ${Eigen3_INCLUDE_DIRS} ) target_link_libraries(wheelchair_state_machine Eigen3::Eigen ) # 添加自定义头文件目录 target_include_directories(wheelchair_state_machine PRIVATE include ) # 安装可执行文件 install(TARGETS wheelchair_state_machine RUNTIME DESTINATION lib/${PROJECT_NAME} ) # 安装头文件(如果有需要) install(DIRECTORY include/ DESTINATION include/${PROJECT_NAME} ) ament_package()