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