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