forked from SteveMacenski/slam_toolbox
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
170 lines (149 loc) · 4.52 KB
/
Copy pathCMakeLists.txt
File metadata and controls
170 lines (149 loc) · 4.52 KB
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
cmake_minimum_required(VERSION 2.8.3)
project(slam_toolbox)
add_compile_options(-std=c++17)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMake/")
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/lib/karto_sdk/cmake)
set(CMAKE_CXX_FLAGS "-fpermissive -std=c++17")
#karto_sdk lib
set(BUILD_SHARED_LIBS ON)
add_subdirectory(lib/karto_sdk)
find_package(catkin REQUIRED
COMPONENTS
cmake_modules
message_filters
nav_msgs
karto_sdk
rosconsole
roscpp
sensor_msgs
sparse_bundle_adjustment
tf2
tf2_ros
visualization_msgs
pluginlib
message_generation
std_srvs
std_msgs
tf2_geometry_msgs
interactive_markers
rviz
)
find_package(PkgConfig REQUIRED)
find_package(Eigen3 REQUIRED)
find_package(CSparse REQUIRED)
find_package(G2O REQUIRED)
find_package(Cholmod REQUIRED)
find_package(LAPACK REQUIRED)
find_package(Ceres REQUIRED COMPONENTS SuiteSparse)
set(CMAKE_AUTOMOC ON)
if(rviz_QT_VERSION VERSION_LESS "5")
find_package(Qt4 ${rviz_QT_VERSION} REQUIRED QtCore QtGui)
include(${QT_USE_FILE})
macro(qt_wrap_ui)
qt4_wrap_ui(${ARGN})
endmacro()
macro(qt_wrap_cpp)
qt4_wrap_cpp(${ARGN})
endmacro()
else()
find_package(Qt5 ${rviz_QT_VERSION} REQUIRED Core Widgets)
set(QT_LIBRARIES Qt5::Widgets)
macro(qt_wrap_ui)
qt5_wrap_ui(${ARGN})
endmacro()
macro(qt_wrap_cpp)
qt5_wrap_cpp(${ARGN})
endmacro()
endif()
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
add_definitions(-DQT_NO_KEYWORDS)
find_package(Boost REQUIRED system serialization filesystem thread)
include_directories(include ${catkin_INCLUDE_DIRS}
${EIGEN3_INCLUDE_DIRS}
${CHOLMOD_INCLUDE_DIR}
#${MKL_INCLUDE_DIR}
#${GTSAM_INCLUDE_DIRS}
${Boost_INCLUDE_DIR}
)
add_definitions(${EIGEN3_DEFINITIONS})
add_service_files(DIRECTORY srvs
FILES
Pause.srv
ClearQueue.srv
ToggleInteractive.srv
Clear.srv
SaveMap.srv
LoopClosure.srv
MergeMaps.srv
AddSubmap.srv
DeserializePoseGraph.srv
SerializePoseGraph.srv
)
generate_messages(
DEPENDENCIES
std_srvs
std_msgs
geometry_msgs
)
catkin_package(
INCLUDE_DIRS include
LIBRARIES ceres_solver_plugin toolbox_lib SlamToolboxPlugin
CATKIN_DEPENDS
message_filters
nav_msgs
rosconsole
roscpp
sparse_bundle_adjustment
sensor_msgs
rviz
tf2
tf2_ros
visualization_msgs
pluginlib
message_runtime
std_srvs
std_msgs
tf2_geometry_msgs
interactive_markers
)
#### Ceres
add_library(ceres_solver_plugin solvers/ceres_solver.cpp)
target_link_libraries(ceres_solver_plugin ${catkin_LIBRARIES}
${CERES_INCLUDE_DIRS}
${CERES_LIBRARIES}
)
#### rviz Plugin
qt_wrap_cpp(MOC_FILES rviz_plugin/slam_toolbox_rviz_plugin.hpp)
set(SOURCE_FILES rviz_plugin/slam_toolbox_rviz_plugin.cpp )
set(HEADER_FILES rviz_plugin/slam_toolbox_rviz_plugin.h )
add_library(SlamToolboxPlugin ${SOURCE_FILES} ${HEADER_FILES})
add_dependencies(SlamToolboxPlugin ${PROJECT_NAME}_generate_messages_cpp)
target_link_libraries(SlamToolboxPlugin ${rviz_DEFAULT_PLUGIN_LIBRARIES} ${QT_LIBRARIES} ${catkin_LIBRARIES} )
#### Main tool for mapping
add_library(toolbox_lib src/slam_toolbox.cpp src/map_saver.cpp)
add_dependencies(toolbox_lib ${PROJECT_NAME}_generate_messages_cpp)
target_link_libraries(toolbox_lib ${catkin_LIBRARIES} ${Boost_LIBRARIES})
add_executable(slam_toolbox src/slam_toolbox_node.cpp )
target_link_libraries(slam_toolbox toolbox_lib ${catkin_LIBRARIES} ${Boost_LIBRARIES})
#### Merging maps tool
add_executable(merge_maps_kinematic src/merge_maps_kinematic.cpp)
add_dependencies(merge_maps_kinematic ${PROJECT_NAME}_generate_messages_cpp)
target_link_libraries(merge_maps_kinematic ${catkin_LIBRARIES} ${Boost_LIBRARIES})
install(TARGETS toolbox_lib slam_toolbox ceres_solver_plugin SlamToolboxPlugin merge_maps_kinematic
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
)
install(DIRECTORY include/${PROJECT_NAME}/
DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
)
install(DIRECTORY launch/
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
)
install(DIRECTORY config
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
)
install(FILES solver_plugins.xml rviz_plugins.xml
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
)