﻿cmake_minimum_required (VERSION 3.5)

set(ModuleName "TY_CheckModule")


#==============TensorRT 版本控制====================
# 查找 TensorRT 的头文件路径
find_path(TENSORRT_INCLUDE_DIR
    NAMES NvInfer.h
    PATHS /usr/include/x86_64-linux-gnu /usr/local/include
)

if(NOT TENSORRT_INCLUDE_DIR)
    message(FATAL_ERROR "TensorRT headers not found")
endif()

message(STATUS "TENSORRT_INCLUDE_DIR: " ${TENSORRT_INCLUDE_DIR})

# 提取版本号
file(READ "${TENSORRT_INCLUDE_DIR}/NvInferVersion.h" TENSORRT_VERSION_CONTENTS)
string(REGEX MATCH "#define NV_TENSORRT_MAJOR ([0-9]+)" _ ${TENSORRT_VERSION_CONTENTS})
set(TRT_MAJOR_VERSION ${CMAKE_MATCH_1})
message(STATUS "Found TensorRT v${TRT_MAJOR_VERSION}")
# 检查版本
if(TRT_MAJOR_VERSION VERSION_LESS 10)
     message(STATUS " close //#define USE_TERNSORRT10_BIGMODEL")
else()
add_definitions(-DUSE_TERNSORRT10_BIGMODEL=${TEST_VALUE})
      message(STATUS "#define USE_TERNSORRT10_BIGMODEL")
    
endif()

#==============TensorRT 版本控制====================

set(CMAKE_CXX_FLAGS "-Wno-error=deprecated-declarations -Wno-deprecated-declarations")
find_package(CUDA REQUIRED)
message(STATUS "cuda version: " ${CUDA_VERSION_STRING})
message(STATUS "cuda CUDA_INCLUDE_DIRS: " ${CUDA_INCLUDE_DIRS})
include_directories(${CUDA_INCLUDE_DIRS})
include_directories(
/usr/include
#/usr/local/cuda-11.3/targets/x86_64-linux/include
${CMAKE_CURRENT_SOURCE_DIR}/include
${CMAKE_CURRENT_SOURCE_DIR}/Utils
${CMAKE_CURRENT_SOURCE_DIR}/Algorithms
${PROJECT_SOURCE_DIR}/include/TensorRT
${PROJECT_SOURCE_DIR}/ConfigModule/include
${PROJECT_SOURCE_DIR}/Common/include
${PROJECT_SOURCE_DIR}/AIEngineModule/include

${PROJECT_SOURCE_DIR}/AIEngineModule/include_base
)
link_directories(
/usr/local/lib/
)
set(CMAKE_CUDA_ARCHITECTURES 86)
set(CMAKE_CUDA_COMPILER "/usr/local/cuda/bin/nvcc") 
enable_language(CUDA)
# 用set设置变量不能使用*.cpp
file(GLOB_RECURSE  SRC_LISTS 
    ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp  
    ${CMAKE_CURRENT_SOURCE_DIR}/src/*.c 
    ${CMAKE_CURRENT_SOURCE_DIR}/Utils/*.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/Utils/*.c
    ${CMAKE_CURRENT_SOURCE_DIR}/Algorithms/*.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/Algorithms/*.c
    ${PROJECT_SOURCE_DIR}/AIEngineModule/src/*.cpp
    ${PROJECT_SOURCE_DIR}/AIEngineModule/src/*.c  
    ${PROJECT_SOURCE_DIR}/AIEngineModule/src/*.cu  
)

add_library(CELL_ET_Check SHARED ${SRC_LISTS})

target_link_libraries(CELL_ET_Check
	nvinfer
	Config
	${OpenCV_LIBS}
	${CUDA_LIBRARIES}
	)
set(ModuleName "")



# make install 安装到/usr/local下
# 自定义安装前缀
set(CMAKE_INSTALL_PREFIX /usr/local/cellet CACHE PATH "Install path prefix" FORCE)
set(HEADER_FILES include/ImgCheckBase.h include/ImgCheckConfig.h)
# 安装动态库
install(TARGETS CELL_ET_Check
        LIBRARY DESTINATION lib  # 安装到 CMAKE_INSTALL_PREFIX/lib
        ARCHIVE DESTINATION lib/static
        RUNTIME DESTINATION bin
        PUBLIC_HEADER DESTINATION include)  # 安装到 CMAKE_INSTALL_PREFIX/include
# 安装头文件
install(FILES ${HEADER_FILES} DESTINATION include)