forked from GerhardR/kfusion
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathCMakeLists.txt
172 lines (122 loc) · 3.91 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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
cmake_minimum_required(VERSION 3.12 FATAL_ERROR)
# use CMake detection of CUDA
project(kfusion LANGUAGES CXX CUDA)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# internal stuff
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
# get all required packages
find_package(TooN REQUIRED)
find_package(OpenGL REQUIRED)
find_package(GLUT REQUIRED)
find_package(Threads REQUIRED)
find_package(CUDA REQUIRED)
# capture libs for depth cameras
find_package(Freenect)
find_package(OpenNI2)
find_package(LibRealSense)
find_package(KinectSDK)
# general IO
include_directories(
${CMAKE_BINARY_DIR}/include
${TOON_INCLUDE_PATHS}
${CUDA_INCLUDE_DIRS}
)
# build CUDA backend library
add_library(kfusion STATIC
helpers.cu
helpers.h
kfusion.cu
kfusion.h
cutil_math.h
README.md
)
target_link_libraries(kfusion
${CUDA_LIBRARIES}
)
#message("'OpenNI2: ${OPENNI2_INCLUDES}'")
#message("'CUDA: ${CUDA_INCLUDE_DIRS}'")
#message("'GLUT: ${GLUT_INCLUDE_DIR}'")
#
# skip these for Windows
#
if (NOT WIN32)
set_target_properties(kfusion PROPERTIES POSITION_INDEPENDENT_CODE ON)
set_target_properties(kfusion PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
endif()
set_target_properties(kfusion PROPERTIES INCLUDE_DIRECTORIES "${CUDA_INCLUDE_DIRS};${TOON_INCLUDE_PATHS}")
#
# Libs
#
set(kfusion_libs ${CUDA_CUDA_LIBRAY})
set(kfusion_incs "${CUDA_INCLUDE_DIRS};${TOON_INCLUDE_PATHS}")
set(kfusion_defs)
set(kfusion_srcs)
option(KFUSION_SCAN_ENABLE_FREENECT "Enable Kinect/Freenect Interface" OFF)
option(KFUSION_SCAN_ENABLE_OPENNI2 "Enable Kinect/OpenNI2 Interface" OFF)
option(KFUSION_SCAN_ENABLE_REALSENSE "Enable Realsense Interface" OFF)
option(KFUSION_SCAN_ENABLE_MSKINECT1 "Enable MS Kinect SDK 1.0" OFF)
if (FREENECT_FOUND AND KFUSION_SCAN_ENABLE_FREENECT)
list(APPEND kfusion_libs ${FREENECT_LIBRARIES})
list(APPEND kfusion_incs ${FREENECT_INCLUDE_PATHS})
list(APPEND kfusion_srcs interface_kinect.hpp interface_kinect.cpp)
set(KFUSION_INTERFACE_HAVE_FREENECT TRUE)
endif()
if (OPENNI2_FOUND AND KFUSION_SCAN_ENABLE_OPENNI2)
list(APPEND kfusion_libs ${OPENNI2_LIBRARY})
list(APPEND kfusion_incs ${OPENNI2_INCLUDES})
list(APPEND kfusion_srcs interface_openni2.hpp interface_openni2.cpp)
set(KFUSION_INTERFACE_HAVE_OPENNI2 TRUE)
endif()
if (REALSENSE_FOUND AND KFUSION_SCAN_ENABLE_REALSENSE)
list(APPEND kfusion_libs ${REALSENSE_LIBRARIES})
list(APPEND kfusion_incs ${REALSENSE_INCLUDE_PATHS})
list(APPEND kfusion_srcs interface_librealsense.hpp interface_librealsense.cpp)
set(KFUSION_INTERFACE_HAVE_LIBREALSENSE TRUE)
endif()
if (KinectSDK_FOUND AND KFUSION_SCAN_ENABLE_MSKINECT1)
list(APPEND kfusion_libs ${KinectSDK_LIBRARIES})
list(APPEND kfusion_incs ${KinectSDK_INCLUDE_DIRS})
list(APPEND kfusion_srcs interface_mskinect.hpp interface_mskinect.cpp)
set(KFUSION_INTERFACE_HAVE_MSKINECT1 TRUE)
endif()
configure_file(interface_config.hpp.cmake
${CMAKE_BINARY_DIR}/include/interface_config.hpp
)
add_executable(kfusion_scan
${CMAKE_BINARY_DIR}/include/interface_config.hpp
kinect.cpp
interface.h
interface.cpp
interface_config.hpp.cmake
${kfusion_srcs}
)
set_target_properties(kfusion_scan PROPERTIES
INCLUDE_DIRECTORIES
"${kfusion_incs};${CMAKE_BINARY_DIR}/include;${GLUT_INCLUDE_DIR}"
)
target_link_libraries(
kfusion_scan
kfusion
${GLUT_LIBRARIES}
${OPENGL_LIBRARIES}
${kfusion_libs}
)
# message("LIBS : ${kfusion_libs}")
# message("LIBS : ${OPENGL_LIBRARIES}")
# message("LIBS : ${GLUT_LIBRARIES}")
# message("CUDA : ${CUDA_LIBRARIES}")
add_executable(kfusion_test
test.cpp
)
set_target_properties(kfusion_test PROPERTIES
INCLUDE_DIRECTORIES
"${kfusion_incs};${CMAKE_BINARY_DIR}/include;${GLUT_INCLUDE_DIR}"
)
target_link_libraries(
kfusion_test
kfusion
${GLUT_LIBRARIES}
${OPENGL_LIBRARIES}
${CUDA_LIBRARIES}
)