Skip to content

Fix overriding of install #13

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Jan 26, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 25 additions & 21 deletions kinematics_interface/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include/kinematics_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()
61 changes: 28 additions & 33 deletions kinematics_interface_kdl/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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()

Expand All @@ -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
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include/kinematics_interface_kdl>
)

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()