派生自 Algorithm/baseDetector

Scheaven
2021-07-22 21b7b5dc0884254080499ea2136e53041c813ec6
CMakeLists.txt
@@ -1,68 +1,42 @@
cmake_minimum_required(VERSION 3.5)
project(yoloDetector VERSION 1.0)
enable_language(CUDA)
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}   -fvisibility=hidden -DEIGEN_MAX_ALIGN_BYTES=32 -DEIGEN_DONT_VECTORIZE -fPIC -march=native -DGPU -DCUDNN -DOPENCV -g -W -O0 -pthread -DS_DEBUG")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}   -fvisibility=hidden -DEIGEN_MAX_ALIGN_BYTES=32 -DEIGEN_DONT_VECTORIZE -fPIC -march=native -DGPU -DCUDNN -DOPENCV -g -W -O0 -pthread -DS_DEBUG -DS_SERVER")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}   -fvisibility=hidden -DEIGEN_MAX_ALIGN_BYTES=32 -DEIGEN_DONT_VECTORIZE -fPIC -lm -march=native -DGPU -DCUDNN -DOPENCV -g -W -O0 -pthread -Wl,--no-as-needed")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  -fvisibility=hidden -DGPU -DCUDNN -DOPENCV -g  -lm -fPIC -W -O0 -Wl,--no-as-needed  -DS_DEBUG -DS_SERVER")  # 编译C脚本时调用GPU环境信息
#set(CMAKE_C_FLAGS "-fvisibility=hidden")
#set(CMAKE_CXX_FLAGS "-fvisibility=hidden")
set(CMAKE_CXX_COMPILIER "/usr/bin/g++")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -O3 -Wno-write-strings")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath -Wl,$ORIGIN")
#项目名称/工程名
project(baseDetector)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build)
#设置c++编译器
set(CUDA_Path /usr/local/cuda)
find_package(OpenCV REQUIRED PATHS "/data/disk2/opt/01_opencv/opencv4.5.2")
set(TensorRT_DIR /data/disk2/opt/05_tensorRT/TensorRT-7.2.3.4)
set(LOG_DIR /data/disk2/opt/log4cplus)
set(CMAKE_CXX_STANDARD 14)
#set(CMAKE_CXX_STANDARD_REQUIRED ON)
#set(CMAKE_CXX_EXTENSIONS OFF)
include_directories(${CUDA_Path}/include)
link_directories(${CUDA_Path}/lib64)
include_directories(${TensorRT_DIR}/include)
include_directories(${TensorRT_DIR}/samples/common)
link_directories(${TensorRT_DIR}/lib)
link_directories(${LOG_DIR}/lib)
include_directories(${LOG_DIR}/include)
#set(CMAKE_BUILD_TYPE debug)
add_compile_options(-fPIC -ldl -lm -g -Wall  -Wshadow -Wno-sign-compare -w  -pthread)
#add_definitions(-DDEBUG_ERR -DDEBUG_INFO)
#add_definitions(-DDEBUG)
#add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
file(GLOB_RECURSE sources src/* src/core/* src/utils/* src/detecter_tools/* ${TensorRT_DIR}/samples/common/*.h ${TensorRT_DIR}/samples/common/logger.cpp)
set(LIBS nvinfer nvparsers nvonnxparser nvinfer_plugin stdc++fs jsoncpp log4cplus)
if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
    set(CMAKE_CUDA_ARCHITECTURES 61)
endif(NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
file(GLOB_RECURSE CURRENT_HEADERS
      ./*.h
      ./lib/*.h
      ./lib/core/*.h
      ./lib/utils/*.h
      ./lib/detecter_tools/*.h
      ./lib/detecter_tools/extra/*.h
      ./lib/detecter_tools/*.hpp
      ./lib/detecter_tools/*.cuh
      ./lib/detecter_tools/darknet/*.hpp
      ./lib/detecter_tools/darknet/*.cuh
   )
#
# 检索查找文件信息
file(GLOB sources
      ./*.cpp
      ./lib/*.cpp
      ./lib/core/*.cpp
      ./lib/utils/*.cpp
      ./lib/detecter_tools/*.cpp
      ./lib/detecter_tools/*.cpp
      ./lib/detecter_tools/darknet/*.c
      ./lib/detecter_tools/darknet/*.cpp
      ./lib/detecter_tools/darknet/*.cu
   )
source_group("Include" FILES ${CURRENT_HEADERS})
source_group("Source" FILES ${sources})
link_directories(/usr/local/cuda/lib64)
link_directories(/usr/local/lib)
# 设置环境的模型查找,如果CUDA版本大于9,则执行CUDA环境的模型查找
if(CUDA_VERSION_MAJOR GREATER 9)
   message("-- CUDA ${CUDA_VERSION_MAJOR} detected")
   set(
         CUDA_NVCC_FLAGS
         ${CUDA_NVCC_FLAGS};
         -gencode arch=compute_61,code=sm_61 -std=c++14   # 不同GPU有不同的算力指数,可查看算力表
          -gencode arch=compute_80,code=sm_80 -std=c++14# 不同GPU有不同的算力指数,可查看算力表
          -gencode arch=compute_72,code=sm_72 -std=c++14# 不同GPU有不同的算力指数,可查看算力表
   )
   set(CUDA_NVCC_FLAGS_RELWITHDEBINFO "--device-debug;-lineinfo")
   #find_package(OpenCV REQUIRED) # 查找系统的默认opencv环境
@@ -70,58 +44,14 @@
endif()
# set(OpenCV_DIR /data/disk2/opt/01_opencv/opencv4.5.1/build)
FIND_PACKAGE(OpenCV REQUIRED PATHS "/data/disk2/opt/01_opencv/opencv4.5.2")
include_directories( ${OpenCV_INCLUDE_DIRS} )
cuda_add_library(${PROJECT_NAME} SHARED ${sources})
target_include_directories(${PROJECT_NAME} PRIVATE ${OpenCV_INCLUDE_DIRS} src/ src/core src/utils/ src/detecter_tools/)
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS} ${LIBS})
SET(LIBS
      gomp
      nvToolsExt
      opencv_core
      opencv_highgui
      opencv_imgcodecs
      opencv_imgproc
      opencv_videoio
      opencv_video
      opencv_calib3d
      opencv_features2d
      opencv_flann
      cublas
      stdc++fs  #设置-lstdc++fs 新链接器选项,防止std等gcc库调用不到
      curand
      cuda
      cudnn
      jsoncpp
      )
add_executable(demo demo.cpp)
target_include_directories(demo PRIVATE src/ src/core src/utils/ src/detecter_tools/)
target_link_libraries(demo ${PROJECT_NAME})
# 将源码目录保存到变量中
#aux_source_directory(./src DIR_SRCS)  # 搜索当前目录下的所有.cpp文件
#add_library(demo ${SRC_LIST})   #明确指定包含哪些源文件
include_directories(".")
include_directories("./lib")
include_directories("./lib/core")
include_directories("./lib/detecter_tools")
include_directories("./lib/utils")
#include_directories("/usr/include/x86_64-linux-gnu/")
#include_directories("/usr/include/json/")
#include_directories("/usr/include")
#include_directories("/usr/local/include/")
#设置链接库搜索目录,项目中lib路径
link_directories(${PYTORCH_DIR}/lib)  #动态链接库目录/bazel-bin/tensorflow
#link_directories(/usr/local/lib)
link_directories(${OPENCV_DIR}/lib)
#link_directories(/usr/lib/x86_64-linux-gnu/)
link_directories(/home/scheaven/anaconda3/lib/)
#添加要编译的可执行文件
#cuda_add_executable(${PROJECT_NAME}
cuda_add_executable(${PROJECT_NAME} main.cpp ${sources} ${CURRENT_HEADERS})
#cuda_add_library(${PROJECT_NAME} SHARED ${sources} ${CURRENT_HEADERS})
#设置 target 需要链接的库
target_link_libraries(${PROJECT_NAME} ${LIBS} ${Opencv_LIBS})
# add_executable(demo demo.cpp ${sources})
# target_include_directories(demo PRIVATE ${OpenCV_INCLUDE_DIRS} src/ src/core src/utils/ src/detecter_tools/)
# target_link_libraries(demo ${OpenCV_LIBS} ${LIBS})