129 lines
3.2 KiB
CMake
129 lines
3.2 KiB
CMake
cmake_minimum_required(VERSION 3.5)
|
|
project(nav2_rviz_plugins)
|
|
|
|
# Default to C++14
|
|
if(NOT CMAKE_CXX_STANDARD)
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
endif()
|
|
|
|
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
|
add_compile_options(-Wall -Wextra -Wpedantic -Werror)
|
|
endif()
|
|
|
|
# Qt5 boilerplate options from http://doc.qt.io/qt-5/cmake-manual.html
|
|
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
|
set(CMAKE_AUTOMOC ON)
|
|
|
|
find_package(ament_cmake REQUIRED)
|
|
find_package(geometry_msgs REQUIRED)
|
|
find_package(nav2_util REQUIRED)
|
|
find_package(nav2_lifecycle_manager REQUIRED)
|
|
find_package(nav2_msgs REQUIRED)
|
|
find_package(nav_msgs REQUIRED)
|
|
find_package(pluginlib REQUIRED)
|
|
find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets Test Concurrent)
|
|
find_package(rclcpp REQUIRED)
|
|
find_package(rclcpp_lifecycle REQUIRED)
|
|
find_package(rviz_common REQUIRED)
|
|
find_package(rviz_default_plugins REQUIRED)
|
|
find_package(rviz_ogre_vendor REQUIRED)
|
|
find_package(rviz_rendering REQUIRED)
|
|
find_package(std_msgs REQUIRED)
|
|
find_package(tf2_geometry_msgs REQUIRED)
|
|
find_package(visualization_msgs REQUIRED)
|
|
|
|
set(nav2_rviz_plugins_headers_to_moc
|
|
include/nav2_rviz_plugins/goal_pose_updater.hpp
|
|
include/nav2_rviz_plugins/goal_common.hpp
|
|
include/nav2_rviz_plugins/goal_tool.hpp
|
|
include/nav2_rviz_plugins/charger_tool.hpp
|
|
include/nav2_rviz_plugins/nav2_panel.hpp
|
|
include/nav2_rviz_plugins/particle_cloud_display/flat_weighted_arrows_array.hpp
|
|
include/nav2_rviz_plugins/particle_cloud_display/particle_cloud_display.hpp
|
|
)
|
|
|
|
include_directories(
|
|
include
|
|
)
|
|
|
|
set(library_name ${PROJECT_NAME})
|
|
|
|
add_library(${library_name} SHARED
|
|
src/goal_tool.cpp
|
|
src/charger_tool.cpp
|
|
src/nav2_panel.cpp
|
|
src/particle_cloud_display/flat_weighted_arrows_array.cpp
|
|
src/particle_cloud_display/particle_cloud_display.cpp
|
|
${nav2_rviz_plugins_headers_to_moc}
|
|
)
|
|
|
|
set(dependencies
|
|
geometry_msgs
|
|
nav2_util
|
|
nav2_lifecycle_manager
|
|
nav2_msgs
|
|
nav_msgs
|
|
pluginlib
|
|
Qt5
|
|
rclcpp
|
|
rclcpp_lifecycle
|
|
rviz_common
|
|
rviz_default_plugins
|
|
rviz_ogre_vendor
|
|
rviz_rendering
|
|
std_msgs
|
|
tf2_geometry_msgs
|
|
)
|
|
|
|
ament_target_dependencies(${library_name}
|
|
${dependencies}
|
|
)
|
|
|
|
target_include_directories(${library_name} PUBLIC
|
|
${Qt5Widgets_INCLUDE_DIRS}
|
|
${OGRE_INCLUDE_DIRS}
|
|
)
|
|
|
|
target_link_libraries(${library_name}
|
|
rviz_common::rviz_common
|
|
)
|
|
|
|
# Causes the visibility macros to use dllexport rather than dllimport,
|
|
# which is appropriate when building the dll but not consuming it.
|
|
# TODO: Make this specific to this project (not rviz default plugins)
|
|
target_compile_definitions(${library_name} PRIVATE "RVIZ_DEFAULT_PLUGINS_BUILDING_LIBRARY")
|
|
|
|
pluginlib_export_plugin_description_file(rviz_common plugins_description.xml)
|
|
|
|
install(
|
|
TARGETS ${library_name}
|
|
EXPORT ${library_name}
|
|
ARCHIVE DESTINATION lib
|
|
LIBRARY DESTINATION lib
|
|
RUNTIME DESTINATION bin
|
|
INCLUDES DESTINATION include
|
|
)
|
|
|
|
install(
|
|
DIRECTORY include/
|
|
DESTINATION include/
|
|
)
|
|
|
|
if(BUILD_TESTING)
|
|
find_package(ament_lint_auto REQUIRED)
|
|
ament_lint_auto_find_test_dependencies()
|
|
endif()
|
|
|
|
ament_export_include_directories(include)
|
|
ament_export_targets(${library_name} HAS_LIBRARY_TARGET)
|
|
ament_export_dependencies(
|
|
Qt5
|
|
rviz_common
|
|
geometry_msgs
|
|
map_msgs
|
|
nav_msgs
|
|
rclcpp
|
|
)
|
|
|
|
ament_package()
|