-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathCMakeLists.txt
131 lines (96 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
120
121
122
123
124
125
126
127
128
129
130
131
CMAKE_MINIMUM_REQUIRED(VERSION 3.8 FATAL_ERROR)
PROJECT(Sfs-Sr-Single LANGUAGES CXX CUDA)
# ------------------------------------------------------------------------
# Build Tests
OPTION(BUILD_TESTS "Build tests" OFF)
# ------------------------------------------------------------------------
# CMake configuration
IF(NOT CMAKE_BUILD_TYPE)
# CMAKE_BUILD_TYPE: RelWithDebInfo, Release or Debug
SET(CMAKE_BUILD_TYPE Debug)
ENDIF()
# CMake paths
# Externals directories (from environment variable "EXT")
LIST(APPEND CMAKE_PREFIX_PATH "$ENV{EXT}")
# include files in cmake subfolder
LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
# executable and library output paths
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
# ------------------------------------------------------------------------
OPTION(BUILD_APPS "Build MV-Depth-SFS applications" ON)
# ------------------------------------------------------------------------
# dependencies
FIND_PACKAGE(CUDA REQUIRED)
INCLUDE_DIRECTORIES(${CUDA_TOOLKIT_INCLUDE})
SET(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -std=c++11")
SET(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --expt-extended-lambda")
# OpenCV
FIND_PACKAGE(OpenCV 3 REQUIRED core highgui imgproc)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/third_party/Eigen/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/third_party/sophus/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/third_party/mLib/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/third_party/Opt/API/release/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/third_party/terra/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/third_party/CLI/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/third_party/Pangolin/include)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/third_party/cuda-image/include)
LINK_DIRECTORIES(${PROJECT_SOURCE_DIR}/third_party/Opt/API/release/lib)
SET(Opt_LIBRARIES
Opt
OptDev
)
# Terra
LINK_DIRECTORIES(${PROJECT_SOURCE_DIR}/third_party/terra/lib)
SET(Terra_LIBRARIES terra)
# Pangolin
LINK_DIRECTORIES(${PROJECT_SOURCE_DIR}/third_party/Pangolin/lib)
# CudaImage
LINK_DIRECTORIES(${PROJECT_SOURCE_DIR}/third_party/cuda-image/lib)
# GTest
IF(BUILD_TESTS)
FIND_PACKAGE(GTest)
INCLUDE_DIRECTORIES(${GTEST_INCLUDE_DIR})
ENDIF()
# ------------------------------------------------------------------------
# C++ flags
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -funroll-loops")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
ADD_DEFINITIONS(
-DSOURCE_DIR=\"${CMAKE_CURRENT_SOURCE_DIR}\"
)
# ------------------------------------------------------------------------
# CUDA flags
SET(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -use_fast_math)
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
SET(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -O0 -g -G)
elseif (CMAKE_BUILD_TYPE STREQUAL "Release")
SET(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -O3)
elseif (CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
SET(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} -O3 -g -G)
endif (CMAKE_BUILD_TYPE STREQUAL "Debug")
# ------------------------------------------------------------------------
# modules
LINK_DIRECTORIES(${LIBRARY_OUTPUT_PATH})
# core library
LIST(APPEND MODULES "libcore")
# image library
LIST(APPEND MODULES "libimage")
# solver library
LIST(APPEND MODULES "libsolver")
# data library
LIST(APPEND MODULES "libdata")
FOREACH(MODULE ${MODULES})
ADD_SUBDIRECTORY(${MODULE})
INCLUDE_DIRECTORIES(${MODULE}/include)
ENDFOREACH()
# ------------------------------------------------------------------------
# applications
LIST(APPEND APPS "sfs")
FOREACH(APP ${APPS})
ADD_SUBDIRECTORY(apps/${APP})
INCLUDE_DIRECTORIES(${APP}/include)
ENDFOREACH()