/
/
/
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/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 ${libnabo_INCLUDE_DIRS}
34 ${EIGEN3_INCLUDE_DIRS}
35)
36
37ament_target_dependencies(${PROJECT_NAME} PUBLIC
38 Eigen3
39 libnabo
40)
41
42target_link_libraries(${PROJECT_NAME} PUBLIC
43 OpenMP::OpenMP_CXX
44)
45
46install(
47 DIRECTORY include/
48 DESTINATION include
49)
50
51ament_export_targets(${PROJECT_NAME})
52ament_export_include_directories("include/${PROJECT_NAME}")
53ament_export_dependencies(
54 Eigen3
55 libnabo
56 OpenMP
57)
58
59install(TARGETS
60 ${PROJECT_NAME}
61 EXPORT ${PROJECT_NAME}
62 ARCHIVE DESTINATION lib
63 LIBRARY DESTINATION lib
64 INCLUDES DESTINATION include
65)
66
67
68if(BUILD_TESTING)
69 include_directories(
70 ${PROJECT_BINARY_DIR}/include
71 )
72
73 find_package(ament_cmake_gtest REQUIRED)
74 ament_find_gtest()
75
76 ament_add_gtest(map_tree_test test/map_tree_test.cpp)
77 target_link_libraries(map_tree_test ${PROJECT_NAME} Eigen3::Eigen)
78 target_include_directories(map_tree_test PUBLIC
79 "include"
80 )
81
82 ament_add_gtest(path_test test/path_test.cpp)
83 target_link_libraries(path_test ${PROJECT_NAME} Eigen3::Eigen)
84 target_include_directories(path_test PUBLIC
85 "include"
86 )
87
88 ament_add_gtest(measurement_test test/measurement_test.cpp)
89 target_link_libraries(measurement_test ${PROJECT_NAME} Eigen3::Eigen)
90 target_include_directories(measurement_test PUBLIC
91 "include"
92 )
93
94 ament_add_gtest(particle_test test/particle_test.cpp)
95 target_link_libraries(particle_test ${PROJECT_NAME} Eigen3::Eigen)
96 target_include_directories(particle_test PUBLIC
97 "include"
98 )
99
100endif()
101
102ament_package()
103