#声明最小版本 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.6.1.6) 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) # 手动查找 hiredis 头文件和库文件 find_path(HIREDIS_INCLUDE_DIR hiredis.h PATH_SUFFIXES hiredis) find_library(HIREDIS_LIBRARY NAMES hiredis) # 检查是否找到 hiredis if (HIREDIS_INCLUDE_DIR AND HIREDIS_LIBRARY) message(STATUS "Found HIREDIS headers: ${HIREDIS_INCLUDE_DIR}") endif() # 查找 jsoncpp 库 find_package(jsoncpp REQUIRED) find_package(CURL REQUIRED) # 添加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} ${jsoncpp_INCLUDE_DIRS} ${CURL_INCLUDE_DIRS} ${HIREDIS_INCLUDE_DIR} ) target_link_libraries( AIRecognize ${CUDA_LIBRARIES} ${TENSORRT_LIBRARY} ${OpenCV_LIBS} jsoncpp ${Boost_LIBRARIES} ${FREETYPE_LIBRARIES} -lmysqlclient ${RABBITMQ_LIBRARIES} ${jsoncpp_LIBRARIES} ${CURL_LIBRARIES} ${HIREDIS_LIBRARY} )