-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathCMakeLists.txt
121 lines (100 loc) · 3.82 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
cmake_minimum_required (VERSION 2.8)
project (BriefMatch)
option(ADVANCED_OPTIONS
"Include advanced options" 0)
option(USE_OPENCV
"Use OpenCV for a more flexible and faster image input" 1)
if (APPLE)
set(CMAKE_MACOSX_RPATH 1)
set(BUILD_WITH_INSTALL_RPATH 1)
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.8")
endif ()
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -W -Wall -Wno-long-long -pedantic")
endif ()
# === Search for dependencies ==================================================
find_package(CUDA REQUIRED)
find_package(PNG REQUIRED)
if (USE_OPENCV)
find_package(OpenCV)
endif ()
# === Add imageLib library ===================================================
add_library(image_lib SHARED
${PROJECT_SOURCE_DIR}/util/imageLib/Convert.cpp
${PROJECT_SOURCE_DIR}/util/imageLib/Image.cpp
${PROJECT_SOURCE_DIR}/util/imageLib/ImageIO.cpp
${PROJECT_SOURCE_DIR}/util/imageLib/ImageIOpng.cpp
${PROJECT_SOURCE_DIR}/util/imageLib/RefCntMem.cpp
)
message( "\n\n==============================================================" )
message( "Dependencies:\n" )
# === Cuda ==================================================================
message( " * Cuda" )
if( NOT CUDA_FOUND )
message( WARNING "Cuda not found." )
else( NOT CUDA_FOUND )
message( "\tCuda version: ${CUDA_VERSION}" )
message( "\tinclude: ${CUDA_INCLUDE_DIRS}\n\tlibs: ${CUDA_LIBRARIES}" )
# NVCC options
set(CUDA_PROPAGATE_HOST_FLAGS OFF)
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -O3 -Xcompiler -fPIC -Wno-deprecated-gpu-targets -use_fast_math" )
else()
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -O3 -Wno-deprecated-gpu-targets -use_fast_math" )
endif()
endif( NOT CUDA_FOUND )
# === libPNG ==================================================================
message( " * libPNG" )
if( NOT PNG_FOUND )
message( WARNING "libPNG not found." )
else( NOT PNG_FOUND )
message( "\tlibPNG version: ${PNG_VERSION_STRING}" )
message( "\tinclude: ${PNG_INCLUDE_DIRS}\n\tlibs: ${PNG_LIBRARIES}" )
endif( NOT PNG_FOUND )
# === OpenCV ==================================================================
if (USE_OPENCV)
message( " * OpenCV" )
if( NOT OpenCV_FOUND )
message( WARNING "OpenCV not found." )
message( "\tBriefMatch will be compiled without OpenCV support." )
set( USE_OPENCV 0 )
else( NOT OpenCV_FOUND )
message( "\tinclude: ${OpenCV_INCLUDE_DIRS}\n\tlibs: ${OpenCV_LIBS}" )
endif( NOT OpenCV_FOUND )
endif ()
message( "==============================================================\n" )
# === Target ==================================================================
include_directories(
"${PROJECT_SOURCE_DIR}/kernels"
"${PROJECT_SOURCE_DIR}/util"
"${PROJECT_SOURCE_DIR}/util/imageLib"
"${PROJECT_BINARY_DIR}"
"${CUDA_INCLUDE_DIRS}"
"${PNG_INCLUDE_DIRS}"
)
if (USE_OPENCV)
include_directories(
"${OpenCV_INCLUDE_DIRS}"
)
endif ()
target_link_libraries(image_lib ${PNG_LIBRARIES})
cuda_add_executable(briefmatch
${PROJECT_SOURCE_DIR}/main.cpp
${PROJECT_SOURCE_DIR}/of_pipeline.cpp
${PROJECT_SOURCE_DIR}/briefmatch.cpp
${PROJECT_SOURCE_DIR}/kernels/briefmatch_cuda.cu
${PROJECT_SOURCE_DIR}/kernels/util_cuda.cu
${PROJECT_SOURCE_DIR}/util/arg_parser.cpp
${PROJECT_SOURCE_DIR}/util/colorcode.cpp
${PROJECT_SOURCE_DIR}/util/flowIO.cpp
)
if (USE_OPENCV)
target_link_libraries(briefmatch image_lib ${CUDA_LIBRARIES} ${PNG_LIBRARIES} ${OpenCV_LIBS})
else (USE_OPENCV)
target_link_libraries(briefmatch image_lib ${CUDA_LIBRARIES} ${PNG_LIBRARIES})
endif ()
# === Config ===================================================================
configure_file(
"${PROJECT_SOURCE_DIR}/config.h.in"
"${PROJECT_BINARY_DIR}/config.h"
)