-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
189 lines (161 loc) · 6.39 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
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
cmake_minimum_required(VERSION 3.5)
project(fast_lio_sam)
# set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_BUILD_TYPE Release)
set(CMAKE_CXX_FLAGS "-std=c++17 -O3")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fexceptions")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -fexceptions -Wno-unused-local-typedefs -Wno-format-truncation -Wno-unused-result -Wno-pedantic -Wno-unused-parameter -Wno-unused-variable")
# echo "/home/will/coredump/core-%e-%p-%s-%t" > /proc/sys/kernel/core_pattern
# SET(CMAKE_BUILD_TYPE "Debug")
# SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
# SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
add_definitions(-DROOT_DIR=\"${CMAKE_CURRENT_SOURCE_DIR}/\")
message("Current CPU archtecture: ${CMAKE_SYSTEM_PROCESSOR}")
if(CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)|(amd64)|(AMD64)|(aarch32)|(AARCH32)|(aarch64)|(AARCH64)")
include(ProcessorCount)
ProcessorCount(N)
message("Processer number: ${N}")
if(N GREATER 6)
add_definitions(-DMP_EN)
add_definitions(-DMP_PROC_NUM=4)
add_definitions(-DBNB_PROC_NUM=6)
message("core for MP: 4")
elseif(N GREATER 4)
add_definitions(-DMP_EN)
add_definitions(-DMP_PROC_NUM=4)
add_definitions(-DBNB_PROC_NUM=4)
message("core for MP: 4")
elseif(N GREATER 3)
add_definitions(-DMP_EN)
add_definitions(-DMP_PROC_NUM=3)
add_definitions(-DBNB_PROC_NUM=3)
message("core for MP: 3")
else()
add_definitions(-DMP_PROC_NUM=1)
add_definitions(-DBNB_PROC_NUM=2)
endif()
else()
add_definitions(-DMP_PROC_NUM=1)
add_definitions(-DBNB_PROC_NUM=2)
endif()
find_package(OpenMP QUIET)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
if(ROS_EDITION STREQUAL "ROS1")
find_package(catkin REQUIRED COMPONENTS
geometry_msgs
nav_msgs
sensor_msgs
roscpp
rospy
std_msgs
pcl_ros
tf
livox_ros_driver
eigen_conversions
slam_interfaces
)
find_package(Eigen3 REQUIRED)
find_package(PCL 1.8 REQUIRED)
find_package(Boost REQUIRED COMPONENTS serialization timer thread chrono)
find_package(GTSAM REQUIRED)
find_package(OpenCV REQUIRED)
include_directories(
${catkin_INCLUDE_DIRS}
${EIGEN3_INCLUDE_DIR}
${PCL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${GTSAM_INCLUDE_DIR}
${OpenCV_INCLUDE_DIRS}
include)
catkin_package(
CATKIN_DEPENDS geometry_msgs nav_msgs roscpp rospy std_msgs
DEPENDS EIGEN3 PCL
INCLUDE_DIRS
)
add_library(${PROJECT_NAME} SHARED
include/frontend/ikd-Tree/ikd_Tree.cpp
include/frontend/ImuProcessor.cpp
include/frontend/use-ikfom.cpp
include/backend/global_localization/scancontext/Scancontext.cpp
include/backend/global_localization/InitCoordinate.cpp
include/backend/backend/Backend.hpp)
target_link_libraries(${PROJECT_NAME} stdc++fs ${PCL_LIBRARIES} ${Boost_LIBRARIES} gtsam)
# add_executable(map_stitch
# include/backend/global_localization/scancontext/Scancontext.cpp
# src/map_stitch.cpp)
# target_link_libraries(map_stitch stdc++fs ${PCL_LIBRARIES} ${Boost_LIBRARIES} gtsam ${catkin_LIBRARIES})
add_executable(fastlio_sam_ros1 src/ros1_main.cpp)
target_link_libraries(fastlio_sam_ros1 ${PROJECT_NAME} ${catkin_LIBRARIES} ${PCL_LIBRARIES})
add_executable(merge_keyframe src/merge_keyframe.cpp)
target_link_libraries(merge_keyframe ${catkin_LIBRARIES} ${PCL_LIBRARIES})
add_executable(fastlio_sam_test_bag test/read_rosbag_test.cpp)
target_link_libraries(fastlio_sam_test_bag ${PROJECT_NAME} ${catkin_LIBRARIES} ${PCL_LIBRARIES} ${OpenCV_LIBRARIES})
install(TARGETS ${PROJECT_NAME} fastlio_sam_ros1
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
install(DIRECTORY launch config rviz_cfg Log
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
)
else(ROS_EDITION STREQUAL "ROS2")
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra -Wpedantic)
endif()
# find dependencies
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(rclpy REQUIRED)
find_package(nav_msgs REQUIRED)
find_package(sensor_msgs REQUIRED)
find_package(visualization_msgs REQUIRED)
find_package(pcl_conversions REQUIRED)
find_package(tf2_ros REQUIRED)
find_package(livox_ros_driver2 REQUIRED)
find_package(slam_interfaces REQUIRED)
find_package(Eigen3 REQUIRED)
find_package(PCL 1.8 REQUIRED)
find_package(Boost REQUIRED COMPONENTS serialization timer thread chrono)
find_package(GTSAM REQUIRED)
find_package(OpenCV REQUIRED)
include_directories(
${EIGEN3_INCLUDE_DIR}
${PCL_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${GTSAM_INCLUDE_DIR}
${OpenCV_INCLUDE_DIRS}
${pcl_conversions_INCLUDE_DIRS}
include)
if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
# the following line skips the linter which checks for copyrights
# uncomment the line when a copyright and license is not present in all source files
#set(ament_cmake_copyright_FOUND TRUE)
# the following line skips cpplint (only works in a git repo)
# uncomment the line when this package is not in a git repo
#set(ament_cmake_cpplint_FOUND TRUE)
ament_lint_auto_find_test_dependencies()
endif()
ament_package()
# add_executable(map_stitch
# include/backend/global_localization/scancontext/Scancontext.cpp
# src/map_stitch.cpp)
# target_link_libraries(map_stitch stdc++fs ${PCL_LIBRARIES} ${Boost_LIBRARIES} gtsam)
add_executable(fastlio_sam_ros2 src/ros2_main.cpp
include/frontend/ikd-Tree/ikd_Tree.cpp
include/backend/global_localization/scancontext/Scancontext.cpp
include/backend/global_localization/InitCoordinate.cpp
include/frontend/ImuProcessor.cpp
include/frontend/use-ikfom.cpp
include/backend/backend/Backend.hpp)
target_link_libraries(fastlio_sam_ros2 stdc++fs ${PCL_LIBRARIES} ${Boost_LIBRARIES} gtsam)
ament_target_dependencies(fastlio_sam_ros2 rclcpp sensor_msgs nav_msgs visualization_msgs tf2_ros livox_ros_driver2)
# add_executable(fastlio_sam_test_bag test/read_rosbag_test.cpp)
# target_link_libraries(fastlio_sam_test_bag ${PROJECT_NAME} ${PCL_LIBRARIES} ${OpenCV_LIBRARIES})
install(TARGETS fastlio_sam_ros2
DESTINATION lib/${PROJECT_NAME}
)
install(DIRECTORY launch config rviz_cfg
DESTINATION share/${PROJECT_NAME})
endif()