#声明最小版本
|
cmake_minimum_required(VERSION 3.2)
|
#工程名称
|
project(AIRecognize LANGUAGES CXX CUDA)
|
# c++ 11
|
set(CMAKE_CXX_FLAGS "-std=c++14 -I/usr/include/mysql -Wall")
|
|
set(CMAKE_BUILD_TYPE Debug)
|
|
# CUDA
|
find_package(CUDA REQUIRED)
|
message(STATUS "Found CUDA headers: ${CUDA_INCLUDE_DIRS}")
|
message(STATUS "Found CUDA libraries: ${CUDA_LIBRARIES}")
|
|
# TensorRT
|
set(TENSORRT_ROOT /usr/local/TensorRT-8.5.3.1)
|
find_path(TENSORRT_INCLUDE_DIR NvInfer.h
|
HINTS ${TENSORRT_ROOT} PATH_SUFFIXES include/)
|
message(STATUS "Found TensorRT headers: ${TENSORRT_INCLUDE_DIR}")
|
|
# TensorRT infer
|
find_library(TENSORRT_LIBRARY_INFER nvinfer
|
HINTS ${TENSORRT_ROOT} ${TENSORRT_BUILD} ${CUDA_TOOLKIT_ROOT_DIR}
|
PATH_SUFFIXES lib lib64 lib/x64)
|
message(STATUS "Found TensorRT-nvinfer libs: ${TENSORRT_LIBRARY_INFER}")
|
|
# TensorRT onnxparser
|
find_library(TENSORRT_LIBRARY_ONNXPARSER nvonnxparser
|
HINTS ${TENSORRT_ROOT} ${TENSORRT_BUILD} ${CUDA_TOOLKIT_ROOT_DIR}
|
PATH_SUFFIXES lib lib64 lib/x64)
|
message(STATUS "Found TensorRT-onnxparser libs: ${TENSORRT_LIBRARY_ONNXPARSER}")
|
set(TENSORRT_LIBRARY ${TENSORRT_LIBRARY_INFER} ${TENSORRT_LIBRARY_ONNXPARSER})
|
|
# OpenCV
|
find_package(OpenCV REQUIRED)
|
|
# Boost
|
find_package(Boost REQUIRED COMPONENTS filesystem system)
|
|
# 查找FreeType库
|
find_package(Freetype REQUIRED)
|
message(STATUS "Found Freetype libraries: ${FREETYPE_LIBRARIES}")
|
|
# 查找 librabbitmq 库
|
find_package(PkgConfig REQUIRED)
|
pkg_check_modules(RABBITMQ REQUIRED librabbitmq)
|
|
# 添加opencv头文件
|
include_directories(${OpenCV_INCLUDE_DIRS})
|
# 添加freetype头文件
|
include_directories(${FREETYPE_INCLUDE_DIRS})
|
|
link_directories(/usr/local/lib)
|
|
# 递归收集rtsp目录及其子目录下的所有.cpp文件
|
file(GLOB_RECURSE base_srcs "${CMAKE_CURRENT_SOURCE_DIR}/base/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/base/*.h")
|
file(GLOB_RECURSE cls_srcs "${CMAKE_CURRENT_SOURCE_DIR}/cls/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/cls/*.h")
|
file(GLOB_RECURSE deploy_srcs "${CMAKE_CURRENT_SOURCE_DIR}/deploy/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/deploy/*.h")
|
#file(GLOB_RECURSE rtsp_srcs "${CMAKE_CURRENT_SOURCE_DIR}/rtsp/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/rtsp/*.h")
|
#file(GLOB_RECURSE rtsp_srcs "${CMAKE_CURRENT_SOURCE_DIR}/third_party/live555/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/third_party/live555/*.h")
|
#file(GLOB_RECURSE json_srcs "${CMAKE_CURRENT_SOURCE_DIR}/third_party/jsoncpp/**/*.cpp")
|
|
|
# 查找指定目录下的所有源文件,然后将结果存进指定变量名。
|
#aux_source_directory(. SRC_LIST)
|
aux_source_directory(${CMAKE_SOURCE_DIR} SRC_LIST)
|
|
# 生成可执行文件
|
#cuda_add_executable(AIRecognize ${SRC_LIST} ${base_srcs} ${cls_srcs} ${deploy_srcs} ${rtsp_srcs})
|
add_executable(AIRecognize ${SRC_LIST} ${base_srcs} ${cls_srcs} ${deploy_srcs} ${rtsp_srcs})
|
|
# 使用jsoncpp
|
find_library(jsoncpp_lib libjsoncpp.a)
|
|
# 生成可执行文件后,为生成文件target添加库
|
target_include_directories(
|
AIRecognize PRIVATE
|
${CMAKE_CURRENT_SOURCE_DIR}
|
${CUDA_INCLUDE_DIRS}
|
${TENSORRT_INCLUDE_DIR}
|
${OpenCV_INCLUDE_DIRS}
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
${RABBITMQ_INCLUDE_DIRS}
|
)
|
|
target_link_libraries(
|
AIRecognize
|
${CUDA_LIBRARIES}
|
${TENSORRT_LIBRARY}
|
${OpenCV_LIBS}
|
${jsoncpp_lib}
|
jsoncpp
|
${Boost_LIBRARIES}
|
${FREETYPE_LIBRARIES}
|
-lmysqlclient
|
${RABBITMQ_LIBRARIES}
|
)
|