| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- cmake_minimum_required(VERSION 3.0)
- project(PaddleDeploy CXX C)
- option(WITH_MKL "Compile demo with MKL/OpenBlas support,defaultuseMKL." ON)
- option(WITH_GPU "Compile demo with GPU/CPU, default use CPU." ON)
- option(WITH_STATIC_LIB "Compile demo with static/shared library, default use static." OFF)
- option(WITH_TENSORRT "Compile demo with TensorRT." OFF)
- SET(TENSORRT_DIR "" CACHE PATH "Location of libraries")
- SET(OPENCV_DIR "" CACHE PATH "Location of libraries")
- SET(CUDA_LIB "" CACHE PATH "Location of libraries")
- SET(CUDNN_LIB "" CACHE PATH "Location of libraries")
- SET(PADDLEX_DIR "" CACHE PATH "Location of libraries")
- # paddlex
- find_package(PaddleDeploy REQUIRED PATHS ${PADDLEX_DIR}/share NO_DEFAULT_PATH)
- include_directories(${PaddleDeploy_INCLUDE_DIRS})
- set(DEPS ${DEPS} ${PaddleDeploy_LIBS})
- # OPENCV
- if (WIN32)
- find_package(OpenCV REQUIRED PATHS ${OPENCV_DIR}/build/ NO_DEFAULT_PATH)
- unset(OpenCV_DIR CACHE)
- else ()
- find_package(OpenCV REQUIRED PATHS ${OPENCV_DIR}/share/OpenCV NO_DEFAULT_PATH)
- endif ()
- set(DEPS ${DEPS} ${OpenCV_LIBS})
- include_directories(${OpenCV_INCLUDE_DIRS})
- # GPU TensorRT
- if(WITH_GPU)
- if(NOT WIN32)
- if (NOT DEFINED CUDNN_LIB)
- message(FATAL_ERROR "please set CUDNN_LIB with -DCUDNN_LIB=/path/cudnn/")
- endif()
- set(DEPS ${DEPS} ${CUDA_LIB}/libcudart${CMAKE_SHARED_LIBRARY_SUFFIX})
- set(DEPS ${DEPS} ${CUDNN_LIB}/libcudnn${CMAKE_SHARED_LIBRARY_SUFFIX})
- if (WITH_TENSORRT)
- include_directories("${TENSORRT_DIR}/include")
- link_directories("${TENSORRT_DIR}/lib")
- set(DEPS ${DEPS} ${TENSORRT_DIR}/lib/libnvinfer${CMAKE_SHARED_LIBRARY_SUFFIX})
- set(DEPS ${DEPS} ${TENSORRT_DIR}/lib/libnvinfer_plugin${CMAKE_SHARED_LIBRARY_SUFFIX})
- endif()
- else()
- set(DEPS ${DEPS} ${CUDA_LIB}/cudart${CMAKE_STATIC_LIBRARY_SUFFIX} )
- set(DEPS ${DEPS} ${CUDA_LIB}/cublas${CMAKE_STATIC_LIBRARY_SUFFIX} )
- set(DEPS ${DEPS} ${CUDA_LIB}/cudnn${CMAKE_STATIC_LIBRARY_SUFFIX})
- if (WITH_TENSORRT)
- include_directories("${TENSORRT_DIR}/include")
- link_directories("${TENSORRT_DIR}/lib")
- set(DEPS ${DEPS} ${TENSORRT_DIR}/lib/nvinfer${CMAKE_STATIC_LIBRARY_SUFFIX})
- set(DEPS ${DEPS} ${TENSORRT_DIR}/lib/nvinfer_plugin${CMAKE_STATIC_LIBRARY_SUFFIX})
- set(DEPS ${DEPS} ${TENSORRT_DIR}/lib/myelin64_1${CMAKE_STATIC_LIBRARY_SUFFIX})
- endif()
- endif()
- endif()
- macro(safe_set_static_flag)
- foreach(flag_var
- CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
- CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
- if(${flag_var} MATCHES "/MD")
- string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
- endif(${flag_var} MATCHES "/MD")
- endforeach(flag_var)
- endmacro()
- if (WIN32)
- add_definitions("/DGOOGLE_GLOG_DLL_DECL=")
- find_package(OpenMP REQUIRED)
- if (OPENMP_FOUND)
- message("OPENMP FOUND")
- set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${OpenMP_C_FLAGS}")
- set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${OpenMP_C_FLAGS}")
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${OpenMP_CXX_FLAGS}")
- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${OpenMP_CXX_FLAGS}")
- endif()
- set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /bigobj /MTd")
- set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /bigobj /MT")
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /bigobj /MTd")
- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /bigobj /MT")
- if (WITH_STATIC_LIB)
- safe_set_static_flag()
- add_definitions(-DSTATIC_LIB)
- endif()
- else()
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -o3 -fopenmp -std=c++11")
- set(CMAKE_STATIC_LIBRARY_PREFIX "")
- set(EXTERNAL_LIB "-ldl -lrt -lgomp -lz -lm -lpthread")
- set(DEPS ${DEPS} ${EXTERNAL_LIB})
- endif()
- message("--DEPS-----:${DEPS}")
- add_executable(model_infer ../../demo/model_infer.cpp)
- target_link_libraries(model_infer ${DEPS})
|