diff --git a/kinematics_interface/CMakeLists.txt b/kinematics_interface/CMakeLists.txt index 5ecab38..6bfc63d 100644 --- a/kinematics_interface/CMakeLists.txt +++ b/kinematics_interface/CMakeLists.txt @@ -1,18 +1,14 @@ -cmake_minimum_required(VERSION 3.5) -project(kinematics_interface) +cmake_minimum_required(VERSION 3.16) +project(kinematics_interface LANGUAGES CXX) -if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 14) -endif() - -if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") +if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") add_compile_options(-Wall -Wextra -Wpedantic) endif() set(THIS_PACKAGE_INCLUDE_DEPENDS - Eigen3 - rclcpp - rclcpp_lifecycle + Eigen3 + rclcpp + rclcpp_lifecycle ) # find dependencies @@ -23,23 +19,31 @@ endforeach() # Create interface library for kinematics base class add_library(kinematics_interface INTERFACE) -target_include_directories(kinematics_interface INTERFACE include) -ament_target_dependencies(kinematics_interface INTERFACE ${THIS_PACKAGE_INCLUDE_DEPENDS}) +target_compile_features(kinematics_interface INTERFACE cxx_std_17) +target_include_directories(kinematics_interface INTERFACE + $ + $ +) +ament_target_dependencies(kinematics_interface INTERFACE + ${THIS_PACKAGE_INCLUDE_DEPENDS} +) # Causes the visibility macros to use dllexport rather than dllimport, # which is appropriate when building the dll but not consuming it. target_compile_definitions(kinematics_interface INTERFACE "KINEMATICS_INTERFACE_BUILDING_DLL") -install(DIRECTORY include/ - DESTINATION include +install( + DIRECTORY include/ + DESTINATION include/kinematics_interface ) - -ament_export_dependencies( - ${THIS_PACKAGE_INCLUDE_DEPENDS} -) - -ament_export_include_directories( - include +install( + TARGETS kinematics_interface + EXPORT export_kinematics_interface + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib + RUNTIME DESTINATION bin ) +ament_export_targets(export_kinematics_interface HAS_LIBRARY_TARGET) +ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS}) ament_package() diff --git a/kinematics_interface_kdl/CMakeLists.txt b/kinematics_interface_kdl/CMakeLists.txt index 2681114..cf71efd 100644 --- a/kinematics_interface_kdl/CMakeLists.txt +++ b/kinematics_interface_kdl/CMakeLists.txt @@ -1,7 +1,7 @@ -cmake_minimum_required(VERSION 3.8) -project(kinematics_interface_kdl) +cmake_minimum_required(VERSION 3.16) +project(kinematics_interface_kdl LANGUAGES CXX) -if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") +if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") add_compile_options(-Wall -Wextra -Wpedantic) endif() @@ -19,54 +19,49 @@ foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS}) find_package(${Dependency} REQUIRED) endforeach() - add_library( - ${PROJECT_NAME} + kinematics_interface_kdl SHARED src/kinematics_interface_kdl.cpp ) -target_include_directories(${PROJECT_NAME} PRIVATE include) -ament_target_dependencies(${PROJECT_NAME} ${THIS_PACKAGE_INCLUDE_DEPENDS}) - -pluginlib_export_plugin_description_file(kinematics_interface kinematics_interface_kdl.xml) - -install( - TARGETS ${PROJECT_NAME} - RUNTIME DESTINATION bin - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib +target_include_directories(kinematics_interface_kdl PUBLIC + $ + $ ) - -install( - DIRECTORY include/ - DESTINATION include +target_compile_features(kinematics_interface_kdl PUBLIC cxx_std_17) +ament_target_dependencies(kinematics_interface_kdl PUBLIC + ${THIS_PACKAGE_INCLUDE_DEPENDS} ) +pluginlib_export_plugin_description_file(kinematics_interface kinematics_interface_kdl.xml) if(BUILD_TESTING) find_package(ament_cmake_gmock REQUIRED) find_package(ros2_control_test_assets REQUIRED) ament_add_gmock( - test_${PROJECT_NAME} + test_kinematics_interface_kdl test/test_kinematics_interface_kdl.cpp ) - target_include_directories(test_${PROJECT_NAME} PRIVATE include) - target_link_libraries(test_${PROJECT_NAME} ${PROJECT_NAME}) - ament_target_dependencies(test_${PROJECT_NAME} - ${THIS_PACKAGE_INCLUDE_DEPENDS} - ros2_control_test_assets - ) + target_link_libraries(test_kinematics_interface_kdl kinematics_interface_kdl) + + # TODO: Use target_link_libraries once ros2_control_test_assets' + # CMake include export is fixed + ament_target_dependencies(test_kinematics_interface_kdl ros2_control_test_assets) endif() -ament_export_libraries( - ${PROJECT_NAME} -) -ament_export_include_directories( - include +install( + DIRECTORY include/ + DESTINATION include/kinematics_interface_kdl ) -ament_export_dependencies( - ${THIS_PACKAGE_INCLUDE_DEPENDS} +install( + TARGETS kinematics_interface_kdl + EXPORT export_kinematics_interface_kdl + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib + RUNTIME DESTINATION bin ) +ament_export_targets(export_kinematics_interface_kdl HAS_LIBRARY_TARGET) +ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS}) ament_package()