cmake_minimum_required(VERSION 3.8) project(cyberdog_marker) # 编译选项 if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Wpedantic) endif() # 查找依赖项 find_package(ament_cmake REQUIRED) find_package(rclcpp REQUIRED) find_package(rclcpp_components REQUIRED) find_package(gazebo_msgs REQUIRED) find_package(rosidl_default_generators REQUIRED) # 生成服务接口 rosidl_generate_interfaces(${PROJECT_NAME} "srv/PlaceMarker.srv" DEPENDENCIES ) # 设置服务接口的链接 rosidl_get_typesupport_target(cpp_typesupport_target "${PROJECT_NAME}" "rosidl_typesupport_cpp") # 添加库 add_library(marker_service SHARED src/marker_service.cpp ) # 设置包含路径 target_include_directories(marker_service PUBLIC "$" "$") # 链接依赖 target_link_libraries(marker_service "${cpp_typesupport_target}" ) ament_target_dependencies(marker_service rclcpp rclcpp_components gazebo_msgs ) # 安装头文件 install( DIRECTORY include/ DESTINATION include ) # 安装库 install(TARGETS marker_service ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin ) # 组件导出 rclcpp_components_register_node( marker_service PLUGIN "cyberdog::marker::MarkerService" EXECUTABLE marker_service_node ) ament_package()