X-Git-Url: http://rtime.felk.cvut.cz/gitweb/hercules2020/kcf.git/blobdiff_plain/40fca2ec92f5af176a94cb8add3aca5e9fb200bc..c86842736562522396746779fd2bf38b01225458:/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index d6359a1..28062bd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,61 +2,21 @@ cmake_minimum_required(VERSION 3.0.2) project(kcf_tracker) -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -pedantic -O3 -Wno-long-long -fno-omit-frame-pointer") - -SET(FFT "OpenCV" CACHE STRING "Select FFT implementation") -SET_PROPERTY(CACHE FFT PROPERTY STRINGS OpenCV OpenCV_cuFFT fftw cuFFTW) -MESSAGE(STATUS "FFT implementation: ${FFT}") - -option(OPENMP "Use OpenMP library. Works with FFTW and OpenCV implementation." OFF) -option(ASYNC "Works only if OPENCV_CUFFT is not ON. Will enable C++ async directive." OFF) -option(DEBUG_MODE "Additional terminal outputs and screens. " OFF) -option(PROFILING "Enable profiling using perf_event_open together with libpfm4. " OFF) - -IF(DEBUG_MODE ) - add_definitions(-DDEBUG_MODE ) - MESSAGE(STATUS "Debug mode") -ENDIF() #DEBUG_MODE - -IF(PROFILING) - add_definitions(-DPROFILING ) - MESSAGE(STATUS "Profiling mode") -ENDIF() #DEBUG_MODE - -SET(use_cuda OFF) - -IF(FFT STREQUAL "OpenCV") -ELSEIF(FFT STREQUAL "OpenCV_cuFFT") - add_definitions(-DOPENCV_CUFFT) - set(use_cuda ON) -ELSEIF(FFT STREQUAL "fftw") - add_definitions(-DFFTW) -ELSEIF(FFT STREQUAL "cuFFTW") - add_definitions(-DFFTW -DCUFFTW) - set(use_cuda ON) -ELSE() - MESSAGE(FATAL_ERROR "Invalid FFT implementation selected") -ENDIF() - -IF(ASYNC AND NOT OPENMP) - add_definitions(-DASYNC) - MESSAGE(STATUS "ASYNC") -ENDIF() #ASYNC +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra -pedantic -Wno-long-long -fno-omit-frame-pointer") +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(default_build_type "Release") + message(STATUS "Setting build type to '${default_build_type}' as none was specified.") + set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE + STRING "Choose the type of build." FORCE) + # Set the possible values of build type for cmake-gui + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Release" "MinSizeRel" "RelWithDebInfo") +endif() FIND_PACKAGE( OpenCV REQUIRED ) link_directories ( ${OpenCV_LIB_DIR} ) -MESSAGE(STATUS "OpenCV_LIB_DIR: ${OpenCV_LIB_DIR} ") - -IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") - IF(NOT OPENMP) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -Wno-unknown-pragmas") - ELSE() - MESSAGE(STATUS "OpenMP") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp") - ENDIF() #ASYNC -ENDIF () - include_directories ( ${OpenCV_INCLUDE_DIRS} ) +MESSAGE(STATUS "OpenCV_LIB_DIR: ${OpenCV_LIB_DIR} ") MESSAGE(STATUS "OpenCV_INCLUDE_DIRS: ${OpenCV_INCLUDE_DIRS}") INCLUDE_DIRECTORIES( ${CMAKE_BINARY_DIR}/) @@ -69,48 +29,8 @@ add_subdirectory(src) IF(NOT use_cuda) add_executable(kcf_vot main_vot.cpp vot.hpp) ELSE() - find_package(CUDA REQUIRED) - link_directories ( ${CUDA_LIB_DIR} ) - MESSAGE(STATUS "CUDA_LIB_DIR: ${CUDA_LIB_DIR} ") - - include_directories ( ${CUDA_INCLUDE_DIRS} ) - MESSAGE(STATUS "CUDA_INCLUDE_DIRS: ${CUDA_INCLUDE_DIRS}") - set(CUDA_SEPARABLE_COMPILATION ON) - set(CUDA_PROPAGATE_HOST_FLAGS OFF) - set(CUDA_HOST_COMPILER /usr/bin/g++) - list( APPEND CUDA_NVCC_FLAGS "-O3 --gpu-architecture compute_62 -std=c++11") - cuda_add_executable( kcf_vot main_vot.cpp vot.hpp ) target_link_libraries(kcf_vot ${CUDA_LIBRARIES}) ENDIF() #OPENCV_CUFFT target_link_libraries(kcf_vot ${OpenCV_LIBS} kcf) - -IF(FFT STREQUAL "fftw") - target_link_libraries(kcf_vot fftw3f) - IF(OPENMP) - target_link_libraries(kcf_vot fftw3_omp) - ENDIF() -ENDIF() #FFTW - -IF(FFT STREQUAL "cuFFTW") - target_link_libraries(kcf_vot cufft cufftw) -ENDIF() #cuFFTW - -IF(PROFILING) - include(ExternalProject) - find_program(MAKE_EXE NAMES gmake nmake make) - ExternalProject_Add(project_libpfm4 - URL https://sourceforge.net/projects/perfmon2/files/libpfm4/libpfm-4.9.0.tar.gz/download - PREFIX ${CMAKE_CURRENT_BINARY_DIR}/external - CONFIGURE_COMMAND "" - BUILD_IN_SOURCE TRUE - BUILD_COMMAND ${MAKE_EXE} - INSTALL_COMMAND ${MAKE_EXE} PREFIX=${CMAKE_CURRENT_BINARY_DIR}/external/libpfm4-4.9.0 install - ) - - add_library(libpfm4 STATIC IMPORTED ) - set_property(TARGET libpfm4 PROPERTY IMPORTED_LOCATION ${CMAKE_CURRENT_BINARY_DIR}/external/libpfm4-4.9.0/lib/libpfm.a) - include_directories(${CMAKE_CURRENT_BINARY_DIR}/external/libpfm4-4.9.0/include/perfmon) - target_link_libraries(kcf_vot libpfm4) -ENDIF()