121 lines
3.6 KiB
CMake
121 lines
3.6 KiB
CMake
cmake_minimum_required(VERSION 3.5)
|
|
project(franka_robot_state_broadcaster)
|
|
|
|
# Default to C++14
|
|
if(NOT CMAKE_CXX_STANDARD)
|
|
set(CMAKE_CXX_STANDARD 14)
|
|
endif()
|
|
|
|
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
|
add_compile_options(-Wall -Wextra -Wpedantic)
|
|
endif()
|
|
|
|
option(CHECK_TIDY "Adds clang-tidy tests" OFF)
|
|
|
|
set(THIS_PACKAGE_INCLUDE_DEPENDS
|
|
builtin_interfaces
|
|
control_msgs
|
|
controller_interface
|
|
controller_manager
|
|
franka_msgs
|
|
franka_semantic_components
|
|
generate_parameter_library
|
|
pluginlib
|
|
rclcpp_lifecycle
|
|
rcutils
|
|
realtime_tools
|
|
sensor_msgs)
|
|
|
|
|
|
# find dependencies
|
|
find_package(ament_cmake REQUIRED)
|
|
|
|
foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS})
|
|
find_package(${Dependency} REQUIRED)
|
|
endforeach()
|
|
|
|
add_library(franka_robot_state_broadcaster
|
|
SHARED
|
|
src/franka_robot_state_broadcaster.cpp)
|
|
target_include_directories(
|
|
franka_robot_state_broadcaster
|
|
PRIVATE
|
|
include
|
|
)
|
|
|
|
|
|
generate_parameter_library(franka_robot_state_broadcaster_parameters src/franka_robot_state_broadcaster_parameters.yaml)
|
|
|
|
target_link_libraries(franka_robot_state_broadcaster
|
|
PUBLIC franka_robot_state_broadcaster_parameters)
|
|
ament_target_dependencies(franka_robot_state_broadcaster PUBLIC
|
|
${THIS_PACKAGE_INCLUDE_DEPENDS})
|
|
|
|
|
|
pluginlib_export_plugin_description_file(controller_interface franka_robot_state_broadcaster.xml)
|
|
|
|
|
|
install(
|
|
TARGETS franka_robot_state_broadcaster
|
|
DESTINATION lib
|
|
)
|
|
install(
|
|
DIRECTORY include/
|
|
DESTINATION include
|
|
)
|
|
|
|
|
|
if(BUILD_TESTING)
|
|
find_package(ament_cmake_gmock REQUIRED)
|
|
find_package(ament_cmake_clang_format REQUIRED)
|
|
find_package(ament_cmake_copyright REQUIRED)
|
|
find_package(ament_cmake_cppcheck REQUIRED)
|
|
find_package(ament_cmake_flake8 REQUIRED)
|
|
find_package(ament_cmake_lint_cmake REQUIRED)
|
|
find_package(ament_cmake_pep257 REQUIRED)
|
|
find_package(ament_cmake_xmllint REQUIRED)
|
|
find_package(ros2_control_test_assets REQUIRED)
|
|
find_package(controller_manager REQUIRED)
|
|
|
|
set(CPP_DIRECTORIES src include)
|
|
ament_clang_format(CONFIG_FILE ../.clang-format ${CPP_DIRECTORIES})
|
|
ament_copyright(${CPP_DIRECTORIES} package.xml)
|
|
ament_cppcheck(${CPP_DIRECTORIES})
|
|
ament_lint_cmake(CMakeLists.txt)
|
|
ament_flake8()
|
|
ament_pep257()
|
|
ament_xmllint()
|
|
if(CHECK_TIDY)
|
|
find_package(ament_cmake_clang_tidy REQUIRED)
|
|
set(ament_cmake_clang_tidy_CONFIG_FILE ../.clang-tidy)
|
|
ament_clang_tidy(${CMAKE_BINARY_DIR})
|
|
endif()
|
|
|
|
add_rostest_with_parameters_gmock(${PROJECT_NAME}_test
|
|
test/test_franka_robot_state_broadcaster.cpp
|
|
${CMAKE_CURRENT_SOURCE_DIR}/test/franka_robot_state_broadcaster_parameters.yaml)
|
|
target_include_directories(${PROJECT_NAME}_test PRIVATE include)
|
|
target_link_libraries(${PROJECT_NAME}_test ${PROJECT_NAME})
|
|
ament_target_dependencies(${PROJECT_NAME}_test controller_manager hardware_interface)
|
|
|
|
ament_add_gmock(test_load_franka_robot_state_broadcaster test/test_load_franka_robot_state_broadcaster.cpp)
|
|
target_include_directories(test_load_franka_robot_state_broadcaster PRIVATE include)
|
|
target_link_libraries(test_load_franka_robot_state_broadcaster ${PROJECT_NAME})
|
|
ament_target_dependencies(
|
|
test_load_franka_robot_state_broadcaster controller_manager hardware_interface
|
|
ros2_control_test_assets)
|
|
endif()
|
|
|
|
ament_export_include_directories(
|
|
include
|
|
)
|
|
ament_export_libraries(
|
|
franka_robot_state_broadcaster
|
|
)
|
|
ament_export_dependencies(
|
|
hardware_interface
|
|
pluginlib
|
|
rclcpp
|
|
)
|
|
ament_package()
|