11cmake_minimum_required (VERSION 3.5)
22project (nav2_waypoint_follower)
33
4- find_package (ament_cmake REQUIRED)
5- find_package (cv_bridge REQUIRED)
6- find_package (geographic_msgs REQUIRED)
7- find_package (geometry_msgs REQUIRED)
4+ # Try for OpenCV 4.X, but settle for whatever is installed
5+ find_package (OpenCV 4 QUIET )
6+ if (NOT OpenCV_FOUND)
7+ find_package (OpenCV REQUIRED)
8+ endif ()
9+ message (STATUS "Found OpenCV version ${OpenCV_VERSION} " )
10+
811find_package (image_transport REQUIRED)
12+ find_package (cv_bridge REQUIRED)
13+ find_package (ament_cmake REQUIRED)
914find_package (nav2_common REQUIRED)
10- find_package (nav2_core REQUIRED)
11- find_package (nav2_msgs REQUIRED)
12- find_package (nav2_util REQUIRED)
13- find_package (nav_msgs REQUIRED)
14- find_package (OpenCV REQUIRED)
15- find_package (pluginlib REQUIRED)
1615find_package (rclcpp REQUIRED)
1716find_package (rclcpp_action REQUIRED)
18- find_package (rclcpp_components REQUIRED)
1917find_package (rclcpp_lifecycle REQUIRED)
20- find_package (robot_localization REQUIRED)
21- find_package (sensor_msgs REQUIRED)
22- find_package (std_msgs REQUIRED)
18+ find_package (rclcpp_components REQUIRED)
19+ find_package (nav_msgs REQUIRED)
20+ find_package (nav2_msgs REQUIRED)
21+ find_package (nav2_util REQUIRED)
2322find_package (tf2_ros REQUIRED)
23+ find_package (nav2_core REQUIRED)
24+ find_package (pluginlib REQUIRED)
25+ find_package (robot_localization REQUIRED)
26+ find_package (geographic_msgs REQUIRED)
2427
2528nav2_package()
2629
30+ include_directories (
31+ include
32+ )
33+
2734set (executable_name waypoint_follower)
2835
36+ add_executable (${executable_name}
37+ src/main.cpp
38+ )
39+
2940set (library_name ${executable_name} _core)
3041
3142add_library (${library_name} SHARED
3243 src/waypoint_follower.cpp
3344)
34- target_include_directories (${library_name} PUBLIC
35- "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include>"
36- "$<INSTALL_INTERFACE:include/${PROJECT_NAME} >"
37- )
38- target_link_libraries (${library_name} PUBLIC
39- ${geographic_msgs_TARGETS}
40- nav2_core::nav2_core
41- ${nav2_msgs_TARGETS}
42- nav2_util::nav2_util_core
43- ${nav_msgs_TARGETS}
44- pluginlib::pluginlib
45- rclcpp::rclcpp
46- rclcpp_action::rclcpp_action
47- rclcpp_lifecycle::rclcpp_lifecycle
48- robot_localization::rl_lib
49- tf2_ros::tf2_ros
50- )
51- target_link_libraries (${library_name} PRIVATE
52- rclcpp_components::component
53- )
5445
55- add_executable (${executable_name}
56- src/main.cpp
46+ set (dependencies
47+ rclcpp
48+ rclcpp_action
49+ rclcpp_lifecycle
50+ rclcpp_components
51+ nav_msgs
52+ nav2_msgs
53+ nav2_util
54+ tf2_ros
55+ nav2_core
56+ pluginlib
57+ image_transport
58+ cv_bridge
59+ OpenCV
60+ robot_localization
5761)
58- target_include_directories ( ${executable_name} PRIVATE
59- "$<BUILD_INTERFACE: ${CMAKE_CURRENT_SOURCE_DIR} /include>"
60- "$<INSTALL_INTERFACE:include/ ${PROJECT_NAME} >"
62+
63+ ament_target_dependencies( ${executable_name}
64+ ${dependencies}
6165)
62- target_link_libraries (${executable_name} PRIVATE
63- ${library_name}
64- rclcpp::rclcpp
66+
67+ target_link_libraries (${executable_name} ${library_name} )
68+
69+ ament_target_dependencies(${library_name}
70+ ${dependencies}
6571)
6672
6773add_library (wait_at_waypoint SHARED plugins/wait_at_waypoint.cpp)
68- target_include_directories (wait_at_waypoint PUBLIC
69- "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include>"
70- "$<INSTALL_INTERFACE:include/${PROJECT_NAME} >"
71- )
72- target_link_libraries (wait_at_waypoint PUBLIC
73- ${geometry_msgs_TARGETS}
74- rclcpp::rclcpp
75- rclcpp_lifecycle::rclcpp_lifecycle
76- nav2_core::nav2_core
77- )
78- target_link_libraries (wait_at_waypoint PRIVATE
79- pluginlib::pluginlib
80- nav2_util::nav2_util_core
81- )
74+ ament_target_dependencies(wait_at_waypoint ${dependencies} )
8275
8376add_library (photo_at_waypoint SHARED plugins/photo_at_waypoint.cpp)
84- target_include_directories (photo_at_waypoint PUBLIC
85- "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include>"
86- "$<INSTALL_INTERFACE:include/${PROJECT_NAME} >"
87- )
88- target_link_libraries (photo_at_waypoint PUBLIC
89- cv_bridge::cv_bridge
90- ${geometry_msgs_TARGETS}
91- image_transport::image_transport
92- nav2_core::nav2_core
93- opencv_core
94- rclcpp::rclcpp
95- rclcpp_lifecycle::rclcpp_lifecycle
96- ${sensor_msgs_TARGETS}
97- )
98- target_link_libraries (photo_at_waypoint PRIVATE
99- nav2_util::nav2_util_core
100- pluginlib::pluginlib
101- )
77+ ament_target_dependencies(photo_at_waypoint ${dependencies} )
10278
10379add_library (input_at_waypoint SHARED plugins/input_at_waypoint.cpp)
104- target_include_directories (input_at_waypoint PUBLIC
105- "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include>"
106- "$<INSTALL_INTERFACE:include/${PROJECT_NAME} >"
107- )
108- target_link_libraries (input_at_waypoint PUBLIC
109- ${geometry_msgs_TARGETS}
110- nav2_core::nav2_core
111- rclcpp::rclcpp
112- rclcpp_lifecycle::rclcpp_lifecycle
113- ${std_msgs_TARGETS}
114- )
115- target_link_libraries (input_at_waypoint PRIVATE
116- pluginlib::pluginlib
117- nav2_util::nav2_util_core
118- )
80+ ament_target_dependencies(input_at_waypoint ${dependencies} )
11981
12082rclcpp_components_register_nodes(${library_name} "nav2_waypoint_follower::WaypointFollower" )
12183
12284install (TARGETS ${library_name} wait_at_waypoint photo_at_waypoint input_at_waypoint
123- EXPORT ${PROJECT_NAME}
12485 ARCHIVE DESTINATION lib
12586 LIBRARY DESTINATION lib
12687 RUNTIME DESTINATION bin
@@ -131,40 +92,19 @@ install(TARGETS ${executable_name}
13192)
13293
13394install (DIRECTORY include /
134- DESTINATION include /${PROJECT_NAME}
95+ DESTINATION include /
13596)
13697
13798if (BUILD_TESTING)
13899 find_package (ament_lint_auto REQUIRED)
139100 find_package (ament_cmake_gtest REQUIRED)
140101 ament_lint_auto_find_test_dependencies()
141-
142- ament_find_gtest()
143102 add_subdirectory (test )
144103endif ()
145104
146- ament_export_include_directories(include / ${PROJECT_NAME} )
105+ ament_export_include_directories(include )
147106ament_export_libraries(wait_at_waypoint photo_at_waypoint input_at_waypoint ${library_name} )
148- ament_export_dependencies(
149- cv_bridge
150- geographic_msgs
151- geometry_msgs
152- image_transport
153- nav2_core
154- nav2_msgs
155- nav2_util
156- nav_msgs
157- OpenCV
158- pluginlib
159- rclcpp
160- rclcpp_action
161- rclcpp_lifecycle
162- robot_localization
163- sensor_msgs
164- std_msgs
165- tf2_ros
166- )
167- ament_export_targets(${PROJECT_NAME} )
107+ ament_export_dependencies(${dependencies} )
168108pluginlib_export_plugin_description_file(nav2_waypoint_follower plugins.xml)
169109
170110ament_package()
0 commit comments