mi-task/ros2-marker/CMakeLists.txt

70 lines
1.6 KiB
CMake
Raw Normal View History

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"
)
# 创建一个包含生成的头文件的目录
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/rosidl_generator_cpp/cyberdog_marker")
# 添加库
add_library(marker_service SHARED
src/marker_service.cpp
)
# 设置包含路径
target_include_directories(marker_service PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
"$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/rosidl_generator_cpp>"
"$<INSTALL_INTERFACE:include>")
# 链接依赖
ament_target_dependencies(marker_service
rclcpp
rclcpp_components
gazebo_msgs
)
# 添加编译依赖,确保在编译库之前生成服务接口
add_dependencies(marker_service ${PROJECT_NAME})
# 服务接口链接
rosidl_target_interfaces(marker_service
${PROJECT_NAME} "rosidl_typesupport_cpp")
# 安装头文件
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()