cmake_minimum_required(VERSION 3.21.0)
project(perception_camera_bev)

set(CMAKE_CXX_STANDARD 17)
SET(CMAKE_BUILD_TYPE "Release")
#SET(CMAKE_BUILD_TYPE "Debug")

# src 目录
set(src_root ${PROJECT_SOURCE_DIR}/src)


# opencv+cuda
find_package(OpenCV  REQUIRED)
message("${OpenCV_LIBRARIES_DIRS}:  \n\n"   ${OpenCV_LIBRARIES_DIRS})
message("${OpenCV_INCLUDE_DIRS}:  \n\n"   ${OpenCV_INCLUDE_DIRS})
# enable_language(CUDA)
link_directories(${OpenCV_LIBRARIES_DIRS})
include_directories(${OpenCV_INCLUDE_DIRS})
find_package(CUDA REQUIRED)
link_directories(/usr/local/cuda/lib64)
include_directories(/usr/local/cuda/include)

# eigen3
find_package(Eigen3 REQUIRED)
link_directories(${EIGEN3_LIBRARIES_DIRS})
include_directories(${EIGEN3_INCLUDE_DIRS})

# yaml+glog+gflag
# include_directories(/usr/include/yaml-cpp)
find_package(yaml-cpp REQUIRED)
include_directories(/usr/include/gflags)
include_directories(/usr/include/glog)

# deepinfer
include_directories(${CMAKE_SOURCE_DIR}/../../deepinfer/include)
link_directories(${CMAKE_SOURCE_DIR}/../../deepinfer/build/src)


find_package(catkin REQUIRED COMPONENTS
  cv_bridge
  roscpp
  roslib
  rospy
  sensor_msgs
  geometry_msgs
  std_msgs
  waytous_perception_msgs
)

find_package(PCL REQUIRED)
include_directories(
        ${PCL_INCLUDE_DIRS}
        ${catkin_INCLUDE_DIRS}
)

catkin_package( 
    INCLUDE_DIRS include
    LIBRARIES ${perception_camera_bev}
    CATKIN_DEPENDS cv_bridge roscpp sensor_msgs std_msgs geometry_msgs message_runtime roslib
)

set(CMAKE_CUDA_ARCHITECTURES 35 50 72)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wfatal-errors -Ofast")
list(APPEND CUDA_NVCC_FLAGS "-D_FORCE_INLINES -Xcompiler -fPIC")

# SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
# SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")

add_executable(camera_bev_infer
        ${src_root}/main.cpp
        ${src_root}/sensor_manager.cpp
        ${src_root}/utils.cpp
        ${src_root}/camera_frame.cpp
        ${src_root}/vision_transform/ComFunction.cpp
        ${src_root}/vision_transform/ros_visualization.cpp
        ${src_root}/vision_transform/vision_3d.cpp
        ${src_root}/undistort/undistort_v2.cpp
        )

target_include_directories(camera_bev_infer PUBLIC
       ${PROJECT_SOURCE_DIR}/include
        ${src_root}
        )

target_link_libraries(camera_bev_infer PUBLIC
        waytous_deepinfer
        ${CUDA_npp_LIBRARY}
        ${CUDA_nppc_LIBRARY}
        ${OpenCV_LIBS}
        ${PCL_LIBRARIES}
        ${catkin_LIBRARIES}
        cudart
        yaml-cpp
        gflags
        glog
        )



