11cmake_minimum_required (VERSION 3.20 )
22project (easynav_octomap_maps_builder)
33
4- if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
4+ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU| Clang" )
55 add_compile_options (-Wall -Wextra -Wpedantic )
66endif ()
77
88set (CMAKE_CXX_STANDARD 23)
99set (CMAKE_CXX_STANDARD_REQUIRED ON )
1010set (CMAKE_CXX_EXTENSIONS OFF )
1111
12- # Dependencies
1312find_package (ament_cmake REQUIRED )
1413find_package (rclcpp REQUIRED )
1514find_package (rclcpp_lifecycle REQUIRED )
1615find_package (sensor_msgs REQUIRED )
1716find_package (tf2 REQUIRED )
1817find_package (tf2_ros REQUIRED )
18+ find_package (tf2_geometry_msgs REQUIRED )
1919find_package (easynav_common REQUIRED )
2020find_package (octomap_msgs REQUIRED )
2121find_package (octomap_ros REQUIRED )
2222find_package (pcl_conversions REQUIRED )
2323find_package (pcl_ros REQUIRED )
2424find_package (visualization_msgs REQUIRED )
25-
2625find_package (PCL REQUIRED )
27- include_directories (${PCL_INCLUDE_DIRS} )
28-
29- find_package (ament_cmake_auto REQUIRED )
30- ament_auto_find_build_dependencies ()
3126find_package (OCTOMAP REQUIRED )
3227
33-
34- set (dependencies
35- rclcpp
36- rclcpp_lifecycle
37- sensor_msgs
38- tf2
39- tf2_ros
40- octomap_ros
41- octomap_msgs
42- pcl_conversions
43- pcl_ros
44- easynav_common
45- )
46-
47-
48- include_directories (include )
49-
50-
51- # Library
28+ # Main library
5229add_library (${PROJECT_NAME} SHARED
5330 src/easynav_octomap_maps_builder/OctomapMapsBuilderNode.cpp
5431)
55- ament_target_dependencies (${PROJECT_NAME} ${dependencies} )
5632
57- target_link_libraries (${PROJECT_NAME}
58- ${OCTOMAP_LIBRARIES}
59- ${PCL_LIBRARIES}
33+ target_include_directories (${PROJECT_NAME} PUBLIC
34+ $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR} /include >
35+ $<INSTALL_INTERFACE :include /${PROJECT_NAME} >
36+ ${octomap_ros_INCLUDE_DIRS}
6037)
6138
62- # Executable
63- add_executable (octomap_maps_builder_main src/octomap_maps_builder_main.cpp )
64- ament_target_dependencies (octomap_maps_builder_main ${dependencies} )
65- target_link_libraries (octomap_maps_builder_main ${PROJECT_NAME} )
66-
67- # Install headers
68- install (DIRECTORY include/
69- DESTINATION include/
39+ # Link against ROS2 targets and external libs
40+ target_link_libraries (${PROJECT_NAME} PUBLIC
41+ ${octomap_msgs_TARGETS}
42+ ${octomap_ros_TARGETS}
43+ ${sensor_msgs_TARGETS}
44+ ${visualization_msgs_TARGETS}
45+ ${OCTOMAP_LIBRARIES}
46+ ${OCTOMATH_LIBRARIES}
47+ easynav_common::easynav_common
48+ pcl_conversions::pcl_conversions
49+ pcl_ros::bag_to_pcd_lib
50+ pcl_ros::combined_pointcloud_to_pcd_lib
51+ pcl_ros::pcd_to_pointcloud_lib
52+ pcl_ros::pcl_ros_filter
53+ pcl_ros::pcl_ros_filters
54+ pcl_ros::pcl_ros_tf
55+ pcl_ros::pointcloud_to_pcd_lib
56+ rclcpp::rclcpp
57+ rclcpp_lifecycle::rclcpp_lifecycle
58+ sensor_msgs::sensor_msgs_library
59+ tf2::tf2
60+ tf2_geometry_msgs::tf2_geometry_msgs
61+ tf2_ros::static_transform_broadcaster_node
62+ tf2_ros::tf2_ros
7063)
7164
72- # Install targets
73- install (TARGETS
74- ${PROJECT_NAME}
75- octomap_maps_builder_main
65+ # Install library and headers
66+ install (
67+ DIRECTORY include/
68+ DESTINATION include/${PROJECT_NAME}
69+ )
70+ install (
71+ TARGETS ${PROJECT_NAME}
72+ EXPORT export_${PROJECT_NAME}
7673 ARCHIVE DESTINATION lib
7774 LIBRARY DESTINATION lib
7875 RUNTIME DESTINATION lib/${PROJECT_NAME}
7976)
8077
78+ # Main executable
79+ add_executable (octomap_maps_builder_main src/octomap_maps_builder_main.cpp )
80+ target_link_libraries (octomap_maps_builder_main PUBLIC
81+ ${PROJECT_NAME}
82+ )
83+
8184# Tests
8285if (BUILD_TESTING)
8386 find_package (ament_lint_auto REQUIRED )
@@ -89,9 +92,23 @@ if(BUILD_TESTING)
8992 add_subdirectory (tests )
9093endif ()
9194
92- # Export
93- ament_export_include_directories (include )
95+ # Export for downstream
96+ ament_export_include_directories (include /${PROJECT_NAME} )
9497ament_export_libraries (${PROJECT_NAME} )
95- ament_export_dependencies (${dependencies} )
98+ ament_export_targets (export_${PROJECT_NAME} )
99+ ament_export_dependencies (
100+ rclcpp
101+ rclcpp_lifecycle
102+ sensor_msgs
103+ tf2
104+ tf2_ros
105+ tf2_geometry_msgs
106+ easynav_common
107+ octomap_msgs
108+ octomap_ros
109+ pcl_conversions
110+ pcl_ros
111+ visualization_msgs
112+ )
96113
97114ament_package ()
0 commit comments