/
/
/
1cmake_minimum_required(VERSION 3.8)
2project(fast_slam_ros_visualization)
3
4
5if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
6 add_compile_options(-Wall -Wextra -Wpedantic)
7endif()
8
9add_definitions(-D_BUILD_DIR_PATH="${CMAKE_CURRENT_BINARY_DIR}")
10add_definitions(-D_SRC_DIR_PATH="${CMAKE_CURRENT_SOURCE_DIR}")
11
12# find dependencies
13find_package(ament_cmake REQUIRED)
14
15find_package(rviz_common REQUIRED)
16find_package(rviz_rendering REQUIRED)
17find_package(rviz_ogre_vendor REQUIRED)
18
19
20find_package(pluginlib REQUIRED)
21
22find_package(geometry_msgs REQUIRED)
23find_package(fast_slam_ros_msgs REQUIRED)
24
25find_package(Qt5 REQUIRED COMPONENTS Widgets Test)
26
27set(fast_slam_ros_visualization_headers_to_moc
28 include/fast_slam_ros_visualization/point_array_display.hpp
29 include/fast_slam_ros_visualization/line_landmark_display.hpp
30)
31
32foreach(header "${fast_slam_ros_visualization_headers_to_moc}")
33 qt5_wrap_cpp(fast_slam_ros_visualization_moc_files "${header}")
34endforeach()
35
36set(fast_slam_ros_visualization_source_files
37 src/point_array_display.cpp
38 src/line_landmark_display.cpp
39)
40
41add_library(fast_slam_ros_visualization SHARED
42 ${fast_slam_ros_visualization_moc_files}
43 ${fast_slam_ros_visualization_source_files}
44)
45
46target_include_directories(fast_slam_ros_visualization PUBLIC
47 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
48 $<INSTALL_INTERFACE:include/${PROJECT_NAME}>
49 ${Qt5Widgets_INCLUDE_DIRS}
50)
51
52target_link_libraries(fast_slam_ros_visualization PUBLIC
53 rviz_ogre_vendor::OgreMain
54 rviz_ogre_vendor::OgreOverlay
55)
56
57ament_target_dependencies(fast_slam_ros_visualization
58 PUBLIC
59 geometry_msgs
60 fast_slam_ros_msgs
61 rviz_common
62 rviz_rendering
63)
64
65# Causes the visibility macros to use dllexport rather than dllimport,
66# which is appropriate when building the dll but not consuming it.
67target_compile_definitions(fast_slam_ros_visualization PRIVATE "RVIZ_DEFAULT_PLUGINS_BUILDING_LIBRARY")
68
69pluginlib_export_plugin_description_file(rviz_common plugins_description.xml)
70
71# Export old-style CMake variables
72ament_export_include_directories("include/${PROJECT_NAME}")
73
74# Export modern CMake targets
75ament_export_targets(fast_slam_ros_visualization HAS_LIBRARY_TARGET)
76
77ament_export_dependencies(
78 geometry_msgs
79 fast_slam_ros_msgs
80 rviz_common
81 rviz_rendering
82)
83
84install(
85 TARGETS fast_slam_ros_visualization
86 EXPORT fast_slam_ros_visualization
87 ARCHIVE DESTINATION lib
88 LIBRARY DESTINATION lib
89 RUNTIME DESTINATION bin
90)
91
92if(BUILD_TESTING)
93 find_package(ament_lint_auto REQUIRED)
94 ament_lint_auto_find_test_dependencies()
95endif()
96
97
98ament_package()