/
/
/
1cmake_minimum_required(VERSION 3.8)
2project(fast_slam)
3
4if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
5 add_compile_options(-Wall -Wextra -Wpedantic)
6endif()
7
8# find dependencies
9find_package(ament_cmake REQUIRED)
10find_package (Eigen3 3.3 REQUIRED NO_MODULE)
11find_package(libnabo REQUIRED)
12find_package(OpenMP REQUIRED)
13
14
15set(srcs
16 "src/Measurement.cpp"
17 "src/MeasurementSet.cpp"
18 "src/Particle.cpp"
19 "src/ParticleSet.cpp"
20 "src/PathList.cpp"
21 "src/MapTree.cpp"
22 "src/MapTreeIterator.cpp"
23 "src/Helper.cpp"
24)
25
26add_library(${PROJECT_NAME}
27 ${srcs}
28)
29
30target_include_directories(${PROJECT_NAME}
31 PUBLIC
32 "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
33 "$<INSTALL_INTERFACE:include>"
34 ${libnabo_INCLUDE_DIRS}
35 ${EIGEN3_INCLUDE_DIRS}
36)
37
38ament_target_dependencies(${PROJECT_NAME} PUBLIC
39 Eigen3
40 libnabo
41)
42
43target_link_libraries(${PROJECT_NAME} PUBLIC
44 OpenMP::OpenMP_CXX
45)
46
47install(
48 DIRECTORY include/
49 DESTINATION include
50)
51
52ament_export_targets(${PROJECT_NAME})
53ament_export_include_directories("include/${PROJECT_NAME}")
54ament_export_dependencies(
55 Eigen3
56 libnabo
57 OpenMP
58)
59
60install(TARGETS
61 ${PROJECT_NAME}
62 EXPORT ${PROJECT_NAME}
63 ARCHIVE DESTINATION lib
64 LIBRARY DESTINATION lib
65 INCLUDES DESTINATION include
66)
67
68
69if(BUILD_TESTING)
70 include_directories(
71 ${PROJECT_BINARY_DIR}/include
72 )
73
74 find_package(ament_cmake_gtest REQUIRED)
75 ament_find_gtest()
76
77 ament_add_gtest(map_tree_test test/map_tree_test.cpp)
78 target_link_libraries(map_tree_test ${PROJECT_NAME} Eigen3::Eigen)
79 target_include_directories(map_tree_test PUBLIC
80 "include"
81 )
82
83 ament_add_gtest(path_test test/path_test.cpp)
84 target_link_libraries(path_test ${PROJECT_NAME} Eigen3::Eigen)
85 target_include_directories(path_test PUBLIC
86 "include"
87 )
88
89 ament_add_gtest(measurement_test test/measurement_test.cpp)
90 target_link_libraries(measurement_test ${PROJECT_NAME} Eigen3::Eigen)
91 target_include_directories(measurement_test PUBLIC
92 "include"
93 )
94
95 ament_add_gtest(particle_test test/particle_test.cpp)
96 target_link_libraries(particle_test ${PROJECT_NAME} Eigen3::Eigen)
97 target_include_directories(particle_test PUBLIC
98 "include"
99 )
100
101 ament_add_gtest(map_tree_iterator_test test/map_tree_iterator_test.cpp)
102 target_link_libraries(map_tree_iterator_test ${PROJECT_NAME} Eigen3::Eigen)
103 target_include_directories(map_tree_iterator_test PUBLIC
104 "include"
105 )
106
107endif()
108
109ament_package()
110