mi-task/test/cy-mark/CMakeLists.txt
2025-05-14 23:13:28 +08:00

67 lines
1.4 KiB
CMake

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
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
"$<INSTALL_INTERFACE:include>")
# 链接依赖
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()