]> rtime.felk.cvut.cz Git - hercules2020/kcf.git/blob - CMakeLists.txt
5b7f91d7404312c6863b117b95ca2da2d1d11fbc
[hercules2020/kcf.git] / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.8)
2
3 project(kcf_tracker)
4
5 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -pedantic -O3 -Wno-long-long -fno-omit-frame-pointer")
6
7 option(OPENCV_CUFFT "If OFF CPU implementation using OpenCV implementation of fft will be used. If ON Nvidia CUFFT implemented in OpenCV will be used. Together with Hostmem from OpenCV." OFF)
8 option(FFTW "Use FFTW implementation of DFT." OFF)
9 option(FFTW_PARALLEL "Use FFTW implementation of DFT." OFF)
10 option(ASYNC "Default setting is on. Works only if OPENCV_CUFFT is not ON. Will enable C++ async directive." OFF)
11 option(VISULIZE_RESULT "Check if you want to visulize the result." OFF)
12 option(DEBUG_MODE "Additional debug output." OFF)
13
14 IF(VISULIZE_RESULT)
15   add_definitions(-DVISULIZE_RESULT)
16   MESSAGE(STATUS "Visulize result")
17 ENDIF() #VISULIZE_RESULT
18
19 IF(DEBUG_MODE )
20   add_definitions(-DDEBUG_MODE )
21   MESSAGE(STATUS "Debug mode")
22 ENDIF() #DEBUG_MODE 
23
24 IF(OPENCV_CUFFT)
25   add_definitions(-DOPENCV_CUFFT)
26   MESSAGE(STATUS "OPENCV+CUFFT version")
27 ELSEIF(FFTW)
28   add_definitions(-DFFTW)
29   MESSAGE(STATUS "FFTW")
30   IF(FFTW_PARALLEL)
31   add_definitions(-DFFTW_PARALLEL)
32   MESSAGE(STATUS "FFTW_PARALLEL")
33   ENDIF() #FFTW_PARALLEL
34 ENDIF() #OPENCV_CUFFT
35
36 IF(ASYNC AND NOT OPENCV_CUFFT AND NOT FFTW)
37   add_definitions(-DASYNC)
38   MESSAGE(STATUS "ASYNC")
39 ENDIF() #ASYNC
40
41 FIND_PACKAGE( OpenCV REQUIRED )
42 link_directories ( ${OpenCV_LIB_DIR} )
43 MESSAGE(STATUS "OpenCV_LIB_DIR: ${OpenCV_LIB_DIR} ")
44
45 IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
46     SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
47 ENDIF ()
48
49 include_directories ( ${OpenCV_INCLUDE_DIRS} )
50 MESSAGE(STATUS "OpenCV_INCLUDE_DIRS: ${OpenCV_INCLUDE_DIRS}")
51
52 INCLUDE_DIRECTORIES( ${CMAKE_BINARY_DIR}/)
53 include_directories(${CMAKE_SOURCE_DIR}/src/ ${CMAKE_SOURCE_DIR}/src/piotr_fhog ${CMAKE_SOURCE_DIR}/src/cn)
54
55 include_directories(${CMAKE_SOURCE_DIR}/sse2neon)
56
57 add_subdirectory(src)
58
59 IF(OPENCV_CUFFT)
60 find_package(CUDA REQUIRED)
61 link_directories ( ${CUDA_LIB_DIR} )
62 MESSAGE(STATUS "CUDA_LIB_DIR: ${CUDA_LIB_DIR} ")
63
64 include_directories ( ${CUDA_INCLUDE_DIRS} )
65 MESSAGE(STATUS "CUDA_INCLUDE_DIRS: ${CUDA_INCLUDE_DIRS}")
66 set(CUDA_SEPARABLE_COMPILATION ON)
67 set(CUDA_PROPAGATE_HOST_FLAGS OFF)
68 set(CUDA_HOST_COMPILER /usr/bin/g++)
69 list( APPEND CUDA_NVCC_FLAGS "-O3 --gpu-architecture compute_62 -std=c++11")
70
71 cuda_add_executable( kcf_vot main_vot.cpp vot.hpp )
72
73 target_link_libraries(kcf_vot ${CUDA_LIBRARIES} ${OpenCV_LIBS}  kcf)
74 ELSE()
75 add_executable(kcf_vot main_vot.cpp vot.hpp)
76 target_link_libraries(kcf_vot ${OpenCV_LIBS} kcf)
77     IF(FFTW)
78         target_link_libraries(kcf_vot fftw3f)
79         IF(FFTW_PARALLEL)
80             target_link_libraries(kcf_vot fftw3_threads)
81         ENDIF() #ASYNC
82     ENDIF() #FFTW
83 ENDIF() #OPENCV_CUFFT