CMakeLists.txt 3.5 KB
Newer Older
1

2 3 4
set(name "gpu")	
set(DEPS "opencv_core")
	
5

6
set(the_target "opencv_${name}")
7

8
project(${the_target})
9

10
add_definitions(-DCVAPI_EXPORTS)
11

12
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/include"
13
					"${CMAKE_CURRENT_SOURCE_DIR}/src/cuda"
14 15
					"${CMAKE_CURRENT_SOURCE_DIR}/src"
					"${CMAKE_CURRENT_BINARY_DIR}")
16

17
foreach(d ${DEPS})
18
	if(${d} MATCHES "opencv_")			
19
		string(REPLACE "opencv_" "${CMAKE_CURRENT_SOURCE_DIR}/../" d_dir ${d})
20
		include_directories("${d_dir}/include")			
21
	endif()
22
endforeach()		
23

24 25
file(GLOB lib_srcs "src/*.cpp")
file(GLOB lib_int_hdrs "src/*.h*")
26 27
file(GLOB lib_cuda "src/cuda/*.cu")
file(GLOB lib_cuda_hdrs "src/cuda/*.h*")	
28
source_group("Src" FILES ${lib_srcs} ${lib_int_hdrs})
29
source_group("Src\\Cuda" FILES ${lib_cuda} ${lib_cuda_hdrs})
30

31
file(GLOB lib_hdrs "include/opencv2/${name}/*.h*")		
32
source_group("Include" FILES ${lib_hdrs})
33

34 35 36
if (HAVE_CUDA)
	include_directories(${CUDA_INCLUDE_DIRS})
	link_directories(${CUDA_LIBRARIES})
37

38
	if (UNIX OR APPLE)
39 40
		set (CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS}  "-Xcompiler;-fPIC;")
		#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" "-fPIC")
41 42
	endif() 
			
43 44 45 46 47 48 49 50 51 52
	#set (CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} "-keep")
	#set (CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS}  "-Xcompiler;/EHsc-;")
	
	if(MSVC)
		#string(REPLACE "/W4" "/W3" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
		#string(REPLACE "/W4" "/W3" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
		#string(REPLACE "/W4" "/W3" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")						
		set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4211 /wd4201 /wd4100 /wd4505 /wd4408 /EHc-")				
	endif()
			
53 54 55
	CUDA_COMPILE(cuda_objs ${lib_cuda})
	#CUDA_BUILD_CLEAN_TARGET()
endif()
56
	
57 58 59

add_library(${the_target} ${lib_srcs} ${lib_hdrs} ${lib_int_hdrs} ${lib_cuda} ${lib_cuda_hdrs} ${cuda_objs})

60

61 62 63 64 65
if(PCHSupport_FOUND)
	set(pch_header ${CMAKE_CURRENT_SOURCE_DIR}/src/precomp.hpp)
	if(${CMAKE_GENERATOR} MATCHES "Visual*" OR ${CMAKE_GENERATOR} MATCHES "Xcode*")
		if(${CMAKE_GENERATOR} MATCHES "Visual*")
			set(${the_target}_pch "src/precomp.cpp")
66
		endif()            
67 68 69 70 71 72 73 74 75 76 77
		add_native_precompiled_header(${the_target} ${pch_header})
	elseif(CMAKE_COMPILER_IS_GNUCXX AND ${CMAKE_GENERATOR} MATCHES ".*Makefiles")
		add_precompiled_header(${the_target} ${pch_header})
	endif()
endif()

# For dynamic link numbering convenions
set_target_properties(${the_target} PROPERTIES
	VERSION ${OPENCV_VERSION}
	SOVERSION ${OPENCV_SOVERSION}
	OUTPUT_NAME "${the_target}${OPENCV_DLLVERSION}"
78
	COMPILE_FLAGS "/EHc-"
79 80 81 82 83 84 85
	)

# Additional target properties
set_target_properties(${the_target} PROPERTIES
	DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}"
	ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/"
	RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/"
86
	INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib"	
87 88 89 90 91 92 93
	)

# Add the required libraries for linking:
target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS} ${IPP_LIBS} ${DEPS} ${CUDA_LIBRARIES})

if(MSVC)
	if(CMAKE_CROSSCOMPILING)
94
		set_target_properties(${the_target} PROPERTIES
95
			LINK_FLAGS "/NODEFAULTLIB:secchk"
96 97
			)
	endif()
98 99 100 101
	set_target_properties(${the_target} PROPERTIES
		LINK_FLAGS "/NODEFAULTLIB:libc"
		)
endif()
102

103 104
# Dependencies of this target:
add_dependencies(${the_target} ${DEPS})
105

106 107 108 109
install(TARGETS ${the_target}
	RUNTIME DESTINATION bin COMPONENT main
	LIBRARY DESTINATION lib COMPONENT main
	ARCHIVE DESTINATION lib COMPONENT main)
110

111 112 113
install(FILES ${lib_hdrs}
	DESTINATION include/opencv2/${name}
	COMPONENT main)
114 115