/
/
/
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(OpenMP REQUIRED)
12find_package(libnabo REQUIRED)
13
14set(srcs
15 "src/Measurement.cpp"
16 "src/MeasurementSet.cpp"
17 "src/Particle.cpp"
18 "src/ParticleSet.cpp"
19 "src/PathList.cpp"
20 "src/MapTree.cpp"
21 "src/MapTreeIterator.cpp"
22 "src/Helper.cpp"
23)
24
25add_library(${PROJECT_NAME}
26 ${srcs}
27)
28
29target_include_directories(${PROJECT_NAME}
30 PUBLIC
31 "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
32 "$<INSTALL_INTERFACE:include>"
33)
34
35target_link_libraries(${PROJECT_NAME} PUBLIC
36 Eigen3::Eigen
37 libnabo::nabo
38 OpenMP::OpenMP_CXX
39)
40
41install(
42 DIRECTORY include/
43 DESTINATION include
44)
45
46ament_export_targets(${PROJECT_NAME})
47ament_export_include_directories("include/${PROJECT_NAME}")
48ament_export_dependencies(
49 Eigen3
50 libnabo
51 OpenMP
52)
53
54install(TARGETS
55 ${PROJECT_NAME}
56 EXPORT ${PROJECT_NAME}
57 ARCHIVE DESTINATION lib
58 LIBRARY DESTINATION lib
59 INCLUDES DESTINATION include
60)
61
62
63if(BUILD_TESTING)
64 include_directories(
65 ${PROJECT_BINARY_DIR}/include
66 )
67
68 find_package(ament_cmake_gtest REQUIRED)
69 ament_find_gtest()
70
71 ament_add_gtest(map_tree_test test/map_tree_test.cpp)
72 target_link_libraries(map_tree_test ${PROJECT_NAME} Eigen3::Eigen)
73 target_include_directories(map_tree_test PUBLIC
74 "include"
75 )
76
77 ament_add_gtest(path_test test/path_test.cpp)
78 target_link_libraries(path_test ${PROJECT_NAME} Eigen3::Eigen)
79 target_include_directories(path_test PUBLIC
80 "include"
81 )
82
83 ament_add_gtest(measurement_test test/measurement_test.cpp)
84 target_link_libraries(measurement_test ${PROJECT_NAME} Eigen3::Eigen)
85 target_include_directories(measurement_test PUBLIC
86 "include"
87 )
88
89 ament_add_gtest(particle_test test/particle_test.cpp)
90 target_link_libraries(particle_test ${PROJECT_NAME} Eigen3::Eigen)
91 target_include_directories(particle_test PUBLIC
92 "include"
93 )
94
95 ament_add_gtest(map_tree_iterator_test test/map_tree_iterator_test.cpp)
96 target_link_libraries(map_tree_iterator_test ${PROJECT_NAME} Eigen3::Eigen)
97 target_include_directories(map_tree_iterator_test PUBLIC
98 "include"
99 )
100
101endif()
102
103ament_package()
104