added flags OpenCV_COMPUTE_CAPABILITIES, which stores the version compute capability from which it is compiled opencv
now use opencv with cuda in your application in the such way : set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} ${OpenCV_COMPUTE_CAPABILITIES})
This commit is contained in:
parent
096080de70
commit
199ffc632d
@ -35,6 +35,11 @@ set(CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE)
|
||||
set(CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE)
|
||||
set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE)
|
||||
set(CMAKE_VERBOSE OFF CACHE BOOL "Verbose mode")
|
||||
|
||||
if (CMAKE_VERBOSE)
|
||||
set (CMAKE_VERBOSE_MAKEFILE 1)
|
||||
endif()
|
||||
|
||||
project(OpenCV)
|
||||
|
||||
@ -642,6 +647,29 @@ if (WITH_CUDA)
|
||||
if (CUDA_FOUND)
|
||||
message(STATUS "CUDA detected.")
|
||||
set(HAVE_CUDA 1)
|
||||
|
||||
set(CUDA_COMPUTE_CAPABILITIES " 1.0 1.1 1.2 1.3 2.0 " CACHE STRING "Add or remove compute capability")
|
||||
set(CUDA_NVCC_FLAGS_ARCH ${CUDA_COMPUTE_CAPABILITIES})
|
||||
|
||||
set(CUDA_NVCC_FLAGS_NUM "")
|
||||
|
||||
while(NOT ${CUDA_NVCC_FLAGS_ARCH} STREQUAL "")
|
||||
string(REGEX MATCH "[0-9]+.[0-9]+" RESULT_NUM ${CUDA_NVCC_FLAGS_ARCH})
|
||||
string(REGEX MATCHALL "[0-9]" RESULT_STR ${RESULT_NUM})
|
||||
string(REGEX REPLACE ";" "\ " RESULT ${RESULT_STR})
|
||||
list(APPEND CUDA_NVCC_FLAGS_NUM ${RESULT})
|
||||
string(REGEX REPLACE "${RESULT_NUM}" "\ " CUDA_NVCC_FLAGS_ARCH_STR ${CUDA_NVCC_FLAGS_ARCH})
|
||||
string(STRIP ${CUDA_NVCC_FLAGS_ARCH_STR} CUDA_NVCC_FLAGS_ARCH)
|
||||
endwhile()
|
||||
|
||||
set (OpenCV_CUDA_CC "")
|
||||
set (loop_var "")
|
||||
foreach( loop_var IN LISTS CUDA_NVCC_FLAGS_NUM)
|
||||
set (CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -gencode arch=compute_${loop_var},code=sm_${loop_var})
|
||||
set (OpenCV_CUDA_CC ${OpenCV_CUDA_CC} -gencode arch=compute_${loop_var},code=sm_${loop_var})
|
||||
endforeach()
|
||||
|
||||
### set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} ${OpenCV_COMPUTE_CAPABILITIES})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -14,13 +14,19 @@
|
||||
# - OpenCV_LIB_DIR : The directory where lib files are. Calling LINK_DIRECTORIES
|
||||
# with this path is NOT needed.
|
||||
# - OpenCV_INCLUDE_DIRS : The OpenCV include directories.
|
||||
# - OpenCV_COMPUTE_CAPABILITIES : The version of compute capability
|
||||
# - OpenCV_VERSION : The version of this OpenCV build. Example: "1.2.0"
|
||||
# - OpenCV_VERSION_MAJOR : Major version part of OpenCV_VERSION. Example: "1"
|
||||
# - OpenCV_VERSION_MINOR : Minor version part of OpenCV_VERSION. Example: "2"
|
||||
# - OpenCV_VERSION_PATCH : Patch version part of OpenCV_VERSION. Example: "0"
|
||||
#
|
||||
# ===================================================================================
|
||||
# =================================================================================================
|
||||
|
||||
# ======================================================
|
||||
# Version Compute Capability from which library OpenCV
|
||||
# has been compiled is remembered
|
||||
# ======================================================
|
||||
SET(OpenCV_COMPUTE_CAPABILITIES @OpenCV_CUDA_CC@)
|
||||
|
||||
# Extract the directory where *this* file has been installed (determined at cmake run-time)
|
||||
# This variable may or may not be used below, depending on the parsing of OpenCVConfig.cmake
|
||||
|
@ -36,28 +36,6 @@ if (HAVE_CUDA)
|
||||
include_directories(${CUDA_INCLUDE_DIRS})
|
||||
link_directories(${CUDA_LIBRARIES})
|
||||
|
||||
set(CUDA_COMPUTE_CAPABILITIES " 1.0 1.1 1.2 1.3 2.0 " CACHE STRING "Add or remove compute capability")
|
||||
set(CUDA_NVCC_FLAGS_ARCH ${CUDA_COMPUTE_CAPABILITIES})
|
||||
|
||||
set(CUDA_NVCC_FLAGS_NUM "")
|
||||
|
||||
while(NOT ${CUDA_NVCC_FLAGS_ARCH} STREQUAL "")
|
||||
string(REGEX MATCH "[0-9]+.[0-9]+" RESULT_NUM ${CUDA_NVCC_FLAGS_ARCH})
|
||||
string(REGEX MATCHALL "[0-9]" RESULT_STR ${RESULT_NUM})
|
||||
string(REGEX REPLACE ";" "\ " RESULT ${RESULT_STR})
|
||||
list(APPEND CUDA_NVCC_FLAGS_NUM ${RESULT})
|
||||
string(REGEX REPLACE "${RESULT_NUM}" "\ " CUDA_NVCC_FLAGS_ARCH_STR ${CUDA_NVCC_FLAGS_ARCH})
|
||||
string(STRIP ${CUDA_NVCC_FLAGS_ARCH_STR} CUDA_NVCC_FLAGS_ARCH)
|
||||
endwhile()
|
||||
|
||||
set (loop_var "")
|
||||
foreach( loop_var IN LISTS CUDA_NVCC_FLAGS_NUM)
|
||||
set (CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -gencode arch=compute_${loop_var},code=sm_${loop_var})
|
||||
endforeach()
|
||||
|
||||
message(STATUS " CUDA_NVCC_FLAGS: ${CUDA_NVCC_FLAGS} ")
|
||||
|
||||
|
||||
if (UNIX OR APPLE)
|
||||
set (CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} "-Xcompiler;-fPIC;")
|
||||
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" "-fPIC")
|
||||
|
Loading…
x
Reference in New Issue
Block a user