cmake_minimum_required(VERSION 3.5)
|
|
#SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -fvisibility=hidden -DEIGEN_MAX_ALIGN_BYTES=32 -DEIGEN_DONT_VECTORIZE -march=native -O0 -Wall -g2 -ggdb")
|
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -DEIGEN_MAX_ALIGN_BYTES=32 -DEIGEN_DONT_VECTORIZE -fPIC -march=native -DGPU -DCUDNN -DOPENCV -g -std=c++14 -W -O3 -pthread -Wl,--no-as-needed -DS_DEBUG")
|
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 -std=c++11 -W -O3 -pthread -Wl,--no-as-needed")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -DGPU -DCUDNN -DOPENCV -g -lm -std=c++11 -fPIC -W -O3 -Wl,--no-as-needed") # 编译C脚本时调用GPU环境信息
|
#set(CMAKE_C_FLAGS "-fvisibility=hidden")
|
#set(CMAKE_CXX_FLAGS "-fvisibility=hidden")
|
|
#项目名称/工程名
|
project(yolo)
|
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build)
|
#设置c++编译器
|
|
set(CMAKE_CXX_STANDARD 11)
|
#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 CURRENT_HEADERS
|
./*.h
|
./lib/*.h
|
./lib/core/*.h
|
./lib/detecter_tools/*.h
|
./lib/detecter_tools/extra/*.h
|
./lib/utils/*.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/detecter_tools/*.cpp
|
./lib/utils/*.cpp
|
./lib/detecter_tools/*.cpp
|
./lib/detecter_tools/darknet/*.c
|
./lib/detecter_tools/darknet/*.cpp
|
./lib/detecter_tools/darknet/*.cu)
|
|
#file(GLOB protobuf_files
|
# ./lib/additional/protomsg.proto
|
#)
|
#foreach(s range ${sources})
|
#message(${s})
|
#endforeach()
|
|
source_group("Include" FILES ${CURRENT_HEADERS})
|
source_group("Source" FILES ${sources})
|
|
|
#cudaS
|
find_package(CUDA REQUIRED)
|
|
#message("-- CUDA version:$(CUDA_VERSION)")
|
|
# 设置环境的模型查找,如果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++11# 不同GPU有不同的算力指数,可查看算力表
|
)
|
set(CUDA_NVCC_FLAGS_RELWITHDEBINFO "--device-debug;-lineinfo")
|
#find_package(OpenCV REQUIRED) # 查找系统的默认opencv环境
|
#message(${OpenCV_LIBS})
|
endif()
|
|
|
set(OPENCV_DIR /home/disk1/s_opt/01_opencv/opencv2.4.13)
|
|
link_directories(/usr/local/cuda-10.0/lib64)
|
#link_directories(/usr/local/lib)
|
|
SET(LIBS
|
cudart
|
gomp
|
nvToolsExt
|
opencv_core
|
opencv_highgui
|
#opencv_imgcodecs
|
opencv_imgproc
|
#opencv_videoio
|
opencv_video
|
opencv_calib3d
|
cublas
|
stdc++fs #设置-lstdc++fs 新链接器选项,防止std等gcc库调用不到
|
curand
|
cuda
|
cudnn
|
jsoncpp
|
)
|
|
# 将源码目录保存到变量中
|
#aux_source_directory(./src DIR_SRCS) # 搜索当前目录下的所有.cpp文件
|
#add_library(demo ${SRC_LIST}) #明确指定包含哪些源文件
|
|
|
#设置包含的目录,项目中的include路径,换成自己的路径即可
|
include_directories(/usr/local/cuda-10.0/include)
|
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/")
|
include_directories(${OPENCV_DIR}/include)
|
|
#设置链接库搜索目录,项目中lib路径
|
link_directories(${OPENCV_DIR}/lib)
|
link_directories(/usr/local/cuda-10.0/lib64) #动态链接库目录/bazel-bin/tensorflow
|
link_directories(/usr/local/lib) #动态链接库目录/bazel-bin/tensorflow
|
link_directories(/usr/lib/x86_64-linux-gnu/)
|
link_directories(/home/basic/anaconda3/lib/)
|
|
|
#添加要编译的可执行文件
|
#cuda_add_executable(${PROJECT_NAME}
|
|
cuda_add_executable(${PROJECT_NAME} SDK_main.cpp ${sources} ${CURRENT_HEADERS})
|
#cuda_add_library(${PROJECT_NAME} SHARED ${sources} ${CURRENT_HEADERS})
|
|
#add_executable(demo ${DIR_SRCS}) ## 生成可执行文件
|
|
|
#设置 target 需要链接的库
|
#添加可执行文件所需要的库,连接libtensorflow_cc.so和libtensorflow_framework库,链接动态链接库
|
target_link_libraries(${PROJECT_NAME} ${LIBS})
|