# CMakeLists.txt - cpp_qos_demo 包构建
cmake_minimum_required(VERSION 3.16)
project(cpp_qos_demo LANGUAGES CXX)

if(NOT CMAKE_CXX_STANDARD)
  set(CMAKE_CXX_STANDARD 17)
endif()

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  add_compile_options(-Wall -Wextra -Wpedantic)
endif()

set(THIS_PACKAGE_INCLUDE_DEPENDS
  rclcpp
  std_msgs
)

add_library(${PROJECT_NAME}_core SHARED src/qos_demo_node.cpp)
target_include_directories(${PROJECT_NAME}_core PUBLIC
  $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
  $<INSTALL_INTERFACE:include/${PROJECT_NAME}>
)
ament_target_dependencies(${PROJECT_NAME}_core ${THIS_PACKAGE_INCLUDE_DEPENDS})

# 两个可执行
add_executable(qos_demo_publisher_cpp src/qos_demo_publisher_main.cpp)
target_link_libraries(qos_demo_publisher_cpp ${PROJECT_NAME}_core)
target_compile_definitions(qos_demo_publisher_cpp PRIVATE "QOS_DEMO_MAIN=0")

add_executable(qos_demo_subscriber_cpp src/qos_demo_subscriber_main.cpp)
target_link_libraries(qos_demo_subscriber_cpp ${PROJECT_NAME}_core)
target_compile_definitions(qos_demo_subscriber_cpp PRIVATE "QOS_DEMO_MAIN=1")

install(TARGETS
  qos_demo_publisher_cpp
  qos_demo_subscriber_cpp
  ${PROJECT_NAME}_core
  DESTINATION lib/${PROJECT_NAME}
)
install(DIRECTORY launch DESTINATION share/${PROJECT_NAME})

ament_package()