cmake_minimum_required(VERSION 3.8)
project(auto_drive_proj_utils)
set(CMAKE_BUILD_TYPE "Debug")

if(NOT CMAKE_C_STANDARD)
    set(CMAKE_C_STANDARD 99)
endif()
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 -Wnon-virtual-dtor -Woverloaded-virtual)
endif ()

find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(Eigen3 REQUIRED)

#find_package(backward_ros REQUIRED)

include_directories(${EIGEN3_INCLUDE_DIR})
add_definitions(${EIGEN_DEFINITIONS})


#include_directories(include)

include_directories(Modbus LibModbus SweetLog ThreadPool Json spdlog SerialCommunicaiton UTM_WGS84 Utils GeodeticConverter MD5)
file(GLOB_RECURSE DIR_SRCS *.cpp *.cc *.h *.hpp)
# 添加源文件，生成库
add_library(auto_drive_proj_utils SHARED
        ${DIR_SRCS}
        )

target_include_directories(auto_drive_proj_utils PUBLIC
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
    $<INSTALL_INTERFACE:include>
)

# 用于代替传统的target_link_libraries
ament_target_dependencies(auto_drive_proj_utils
        PUBLIC
        rclcpp
        )


# 为了使下游文件可以访问
ament_export_targets(auto_drive_proj_utils HAS_LIBRARY_TARGET)
ament_export_dependencies(
        rclcpp
)

install(
        TARGETS auto_drive_proj_utils
        EXPORT auto_drive_proj_utils
        ARCHIVE DESTINATION lib
        LIBRARY DESTINATION lib
        RUNTIME DESTINATION bin
        #INCLUDES DESTINATION include
)

install(
    DIRECTORY Json/
    DESTINATION include/auto_drive_proj_utils/Json
)
install(
    DIRECTORY GeodeticConverter/
    DESTINATION include/auto_drive_proj_utils/GeodeticConverter
)
install(
    DIRECTORY spdlog/
    DESTINATION include/auto_drive_proj_utils/spdlog
)
install(
    DIRECTORY SerialCommunicaiton/
    DESTINATION include/auto_drive_proj_utils/SerialCommunicaiton
)
install(
    DIRECTORY UTM_WGS84/
    DESTINATION include/auto_drive_proj_utils/UTM_WGS84
)
install(
    DIRECTORY Utils/
    DESTINATION include/auto_drive_proj_utils/Utils
)
install(
    DIRECTORY LibModbus/
    DESTINATION include/auto_drive_proj_utils/LibModbus
)
install(
    DIRECTORY ThreadPool/
    DESTINATION include/auto_drive_proj_utils/ThreadPool
)
install(
    DIRECTORY MD5/
    DESTINATION include/auto_drive_proj_utils/MD5
)
install(DIRECTORY
  config
  DESTINATION share/${PROJECT_NAME}/
)


ament_package()
