67 lines
1.4 KiB
CMake
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()
|