| | |
| | | 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有不同的算力指数,可查看算力表 |
| | | ) |
| | | set(CUDA_NVCC_FLAGS_RELWITHDEBINFO "--device-debug;-lineinfo") |
| | | #find_package(OpenCV REQUIRED) # 查找系统的默认opencv环境 |
| | | #message(${OpenCV_LIBS}) |
| | | 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环境 |
| | | #message(${OpenCV_LIBS}) |
| | | 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}) |