root / rgbdslam / CMakeLists.txt @ 9240aaa3
History | View | Annotate | Download (6.78 KB)
1 |
######################################################### |
---|---|
2 |
### CONFIG ############################################## |
3 |
######################################################### |
4 |
# 1, if SiftGPU should be used. For additional information |
5 |
# see README |
6 |
set(USE_SIFT_GPU 1) |
7 |
set(ENV{SIFT_GPU_MODE} 2) #CUDA = 1, GLSL = 2 |
8 |
set(ENV{SIFT_GPU_CUDA_PATH} /usr/local/cuda) |
9 |
|
10 |
set(USE_GICP_BIN 0) |
11 |
set(USE_GICP_CODE 0) |
12 |
######################################################### |
13 |
######################################################### |
14 |
######################################################### |
15 |
|
16 |
|
17 |
cmake_minimum_required(VERSION 2.4.6) |
18 |
include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake) |
19 |
|
20 |
# Set the build type. Options are: |
21 |
# Coverage : w/ debug symbols, w/o optimization, w/ code-coverage |
22 |
# Debug : w/ debug symbols, w/o optimization |
23 |
# Release : w/o debug symbols, w/ optimization |
24 |
# RelWithDebInfo : w/ debug symbols, w/ optimization |
25 |
# MinSizeRel : w/o debug symbols, w/ optimization, stripped binaries |
26 |
set(ROS_BUILD_TYPE RelWithDebInfo) |
27 |
|
28 |
#is used for compiling the libraries |
29 |
set(USE_GICP 0) |
30 |
IF (${USE_GICP_BIN} OR ${USE_GICP_CODE}) |
31 |
set(USE_GICP 1) |
32 |
ENDIF (${USE_GICP_BIN} OR ${USE_GICP_CODE}) |
33 |
|
34 |
rosbuild_init() |
35 |
|
36 |
#set the default path for built executables to the "bin" directory |
37 |
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) |
38 |
#set the default path for built libraries to the "lib" directory |
39 |
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) |
40 |
|
41 |
#uncomment if you have defined messages |
42 |
#rosbuild_genmsg() |
43 |
#uncomment if you have defined services |
44 |
rosbuild_gensrv() |
45 |
#common commands for building c++ executables and libraries |
46 |
#rosbuild_add_library(${PROJECT_NAME} src/example.cpp) |
47 |
#target_link_libraries(${PROJECT_NAME} another_library) |
48 |
#rosbuild_add_boost_directories() |
49 |
#rosbuild_link_boost(${PROJECT_NAME} thread) |
50 |
#rosbuild_add_executable(example examples/example.cpp) |
51 |
|
52 |
|
53 |
############################################################################## |
54 |
# Required 3rd party |
55 |
############################################################################## |
56 |
|
57 |
############################# |
58 |
# Qt ######################## |
59 |
############################# |
60 |
# http://qtnode.net/wiki/Qt4_with_cmake |
61 |
find_package(Qt4 REQUIRED) |
62 |
SET(QT_USE_QTXML TRUE) |
63 |
SET(QT_USE_QTOPENGL TRUE) |
64 |
ADD_DEFINITIONS(-DQT_NO_KEYWORDS) |
65 |
include(${QT_USE_FILE}) |
66 |
|
67 |
# This is necessary as all ui files etc will get dumped in the bottom of then binary directory. |
68 |
include_directories(${CMAKE_CURRENT_BINARY_DIR} ${QT_QTOPENGL_INCLUDE_DIR} gicp/ann_1.1.1/include/) |
69 |
|
70 |
#get_directory_property(clean ADDITIONAL_MAKE_CLEAN_FILES) |
71 |
#SET(clean external/siftgpu/linux/bin/libsiftgpu.so) |
72 |
#set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${clean}") |
73 |
|
74 |
LINK_DIRECTORIES(${LIBRARY_OUTPUT_PATH}) |
75 |
SET(${CMAKE_LIBRARY_PATH} ${LIBRARY_OUTPUT_PATH}) |
76 |
#SET(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE TRUE) |
77 |
|
78 |
|
79 |
|
80 |
############################# |
81 |
# SiftGPU ################### |
82 |
############################# |
83 |
IF (${USE_SIFT_GPU}) |
84 |
SET(sift_gpu_build_path ${CMAKE_SOURCE_DIR}/external/siftgpu/linux) |
85 |
|
86 |
include_directories(${CMAKE_CURRENT_BINARY_DIR} external/siftgpu/src) |
87 |
|
88 |
MESSAGE("\n------------------------------------------------------------------\n") |
89 |
MESSAGE("Compiling SiftGPU...") |
90 |
EXECUTE_PROCESS( |
91 |
COMMAND make siftgpu |
92 |
WORKING_DIRECTORY ${sift_gpu_build_path} |
93 |
RESULT_VARIABLE sift_gpu_return |
94 |
) |
95 |
MESSAGE("\n------------------------------------------------------------------\n") |
96 |
|
97 |
#on error |
98 |
IF (NOT ${sift_gpu_return} EQUAL 0) |
99 |
MESSAGE(FATAL_ERROR "SiftGPU cannot be compiled. Returned: ${sift_gpu_return}") |
100 |
ENDIF (NOT ${sift_gpu_return} EQUAL 0) |
101 |
|
102 |
FILE(COPY external/siftgpu/linux/bin/libsiftgpu.so DESTINATION ../lib) |
103 |
|
104 |
add_definitions(-DUSE_SIFT_GPU) |
105 |
add_definitions(-DSIFT_GPU_MODE=$ENV{SIFT_GPU_MODE}) |
106 |
ENDIF (${USE_SIFT_GPU}) |
107 |
|
108 |
|
109 |
|
110 |
############################# |
111 |
# GICP ###################### |
112 |
############################# |
113 |
IF (${USE_GICP}) |
114 |
MESSAGE("\n------------------------------------------------------------------\n") |
115 |
MESSAGE("Compiling GICP...") |
116 |
EXECUTE_PROCESS( |
117 |
COMMAND make linux-g++ |
118 |
WORKING_DIRECTORY gicp/ann_1.1.1/ |
119 |
RESULT_VARIABLE gicp_return |
120 |
) |
121 |
MESSAGE("\n------------------------------------------------------------------\n") |
122 |
|
123 |
#on error |
124 |
IF (NOT ${gicp_return} EQUAL 0) |
125 |
MESSAGE(FATAL_ERROR "GICP cannot be compiled. Returned: ${gicp_return}") |
126 |
ENDIF (NOT ${gicp_return} EQUAL 0) |
127 |
|
128 |
FILE(COPY gicp/ann_1.1.1/lib/libANN.a DESTINATION ../lib) |
129 |
ENDIF (${USE_GICP}) |
130 |
|
131 |
IF (${USE_GICP_BIN}) |
132 |
add_definitions(-DUSE_ICP_BIN) |
133 |
ENDIF (${USE_GICP_BIN}) |
134 |
|
135 |
IF (${USE_GICP_CODE}) |
136 |
add_definitions(-DUSE_ICP_CODE) |
137 |
ENDIF (${USE_GICP_CODE}) |
138 |
|
139 |
|
140 |
|
141 |
############################# |
142 |
# OpenCV #################### |
143 |
############################# |
144 |
find_package(OpenCV) |
145 |
include_directories(${OpenCV_INCLUDE_DIRS}) |
146 |
|
147 |
############################################################################## |
148 |
# Sections |
149 |
############################################################################## |
150 |
|
151 |
file(GLOB QT_FORMS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ui/*.ui) |
152 |
file(GLOB QT_RESOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} resources/*.qrc) |
153 |
file(GLOB_RECURSE QT_MOC RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} FOLLOW_SYMLINKS include/local/*.hpp src/qtros.h src/openni_listener.h src/qt_gui.h src/graph_manager.h src/glviewer.h src/ros_service_ui.h) |
154 |
|
155 |
QT4_ADD_RESOURCES(QT_RESOURCES_CPP ${QT_RESOURCES}) |
156 |
QT4_WRAP_UI(QT_FORMS_HPP ${QT_FORMS}) |
157 |
QT4_WRAP_CPP(QT_MOC_HPP ${QT_MOC}) |
158 |
|
159 |
############################################################################## |
160 |
# Sources |
161 |
############################################################################## |
162 |
SET(ADDITIONAL_SOURCES src/gicp-fallback.cpp src/main.cpp src/qtros.cpp src/openni_listener.cpp src/qt_gui.cpp src/flow.cpp src/node.cpp src/graph_manager.cpp src/glviewer.cpp src/parameter_server.cpp src/ros_service_ui.cpp src/misc.cpp) |
163 |
|
164 |
IF (${USE_SIFT_GPU}) |
165 |
SET(ADDITIONAL_SOURCES ${ADDITIONAL_SOURCES} src/sift_gpu_feature_detector.cpp) |
166 |
ENDIF (${USE_SIFT_GPU}) |
167 |
|
168 |
file(GLOB_RECURSE QT_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} FOLLOW_SYMLINKS ${ADDITIONAL_SOURCES}) |
169 |
|
170 |
############################################################################## |
171 |
# Binaries |
172 |
############################################################################## |
173 |
rosbuild_add_executable(rgbdslam ${QT_SOURCES} ${QT_RESOURCES_CPP} ${QT_FORMS_HPP} ${QT_MOC_HPP}) |
174 |
|
175 |
#set libs |
176 |
SET(LIBS_LINK rgbdslam GL GLU g2o_types_slam3d g2o_solver_cholmod g2o_solver_pcg g2o_solver_csparse ${QT_LIBRARIES} ${QT_QTOPENGL_LIBRARY} ${GLUT_LIBRARY} ${OPENGL_LIBRARY} ${OpenCV_LIBS}) |
177 |
|
178 |
IF (${USE_SIFT_GPU}) |
179 |
SET(LIBS_LINK ${LIBS_LINK} siftgpu) |
180 |
ENDIF (${USE_SIFT_GPU}) |
181 |
|
182 |
IF (${USE_GICP}) |
183 |
SET(LIBS_LINK ${LIBS_LINK} gicp ANN gsl gslcblas) |
184 |
ENDIF (${USE_GICP}) |
185 |
|
186 |
IF (${USE_GICP}) |
187 |
rosbuild_add_library(gicp gicp/bfgs_funcs.cpp gicp/gicp.cpp gicp/optimize.cpp gicp/scan.cpp gicp/transform.cpp) |
188 |
ENDIF (${USE_GICP}) |
189 |
|
190 |
#link libraries |
191 |
target_link_libraries(${LIBS_LINK}) |
192 |
|