Skip to content

Commit 54e38fa

Browse files
committed
Fix overriding of install
Signed-off-by: Tyler Weaver <[email protected]>
1 parent 01a2cda commit 54e38fa

File tree

3 files changed

+72
-74
lines changed

3 files changed

+72
-74
lines changed

kinematics_interface/CHANGELOG.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,3 @@ Changelog for package kinematics_interface
2323
* updated README and cleaned up code
2424
* added KDL plugin for kinematics interface
2525
* Contributors: Paul Gesel, Andy Zelenak, Bence Magyar, Denis Štogl
26-
Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,47 @@
1-
cmake_minimum_required(VERSION 3.5)
2-
project(kinematics_interface)
1+
cmake_minimum_required(VERSION 3.16)
2+
project(kinematics_interface LANGUAGES CXX)
33

4-
if(NOT CMAKE_CXX_STANDARD)
5-
set(CMAKE_CXX_STANDARD 14)
6-
endif()
7-
8-
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
4+
if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)")
95
add_compile_options(-Wall -Wextra -Wpedantic)
106
endif()
117

12-
set(THIS_PACKAGE_INCLUDE_DEPENDS
13-
Eigen3
14-
rclcpp
15-
rclcpp_lifecycle
16-
)
17-
18-
# find dependencies
19-
find_package(ament_cmake REQUIRED)
20-
foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS})
21-
find_package(${Dependency} REQUIRED)
22-
endforeach()
8+
find_package(Eigen3 REQUIRED)
9+
find_package(rclcpp REQUIRED)
10+
find_package(rclcpp_lifecycle REQUIRED)
2311

2412
# Create interface library for kinematics base class
2513
add_library(kinematics_interface INTERFACE)
26-
target_include_directories(kinematics_interface INTERFACE include)
27-
ament_target_dependencies(kinematics_interface INTERFACE ${THIS_PACKAGE_INCLUDE_DEPENDS})
14+
target_compile_features(kinematics_interface INTERFACE cxx_std_17)
15+
target_include_directories(kinematics_interface INTERFACE
16+
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
17+
$<INSTALL_INTERFACE:include/kinematics_interface>
18+
)
19+
target_link_libraries(kinematics_interface INTERFACE
20+
Eigen3::Eigen
21+
rclcpp::rclcpp
22+
rclcpp_lifecycle::rclcpp_lifecycle
23+
)
2824

2925
# Causes the visibility macros to use dllexport rather than dllimport,
3026
# which is appropriate when building the dll but not consuming it.
3127
target_compile_definitions(kinematics_interface INTERFACE "KINEMATICS_INTERFACE_BUILDING_DLL")
3228

33-
install(DIRECTORY include/
34-
DESTINATION include
29+
install(
30+
DIRECTORY include/
31+
DESTINATION include/kinematics_interface
3532
)
36-
37-
ament_export_dependencies(
38-
${THIS_PACKAGE_INCLUDE_DEPENDS}
33+
install(
34+
TARGETS kinematics_interface
35+
EXPORT export_kinematics_interface
36+
ARCHIVE DESTINATION lib
37+
LIBRARY DESTINATION lib
38+
RUNTIME DESTINATION bin
3939
)
4040

41-
ament_export_include_directories(
42-
include
41+
ament_export_targets(export_kinematics_interface HAS_LIBRARY_TARGET)
42+
ament_export_dependencies(
43+
Eigen3
44+
rclcpp
45+
rclcpp_lifecycle
4346
)
44-
4547
ament_package()
Lines changed: 42 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,69 @@
1-
cmake_minimum_required(VERSION 3.8)
2-
project(kinematics_interface_kdl)
1+
cmake_minimum_required(VERSION 3.16)
2+
project(kinematics_interface_kdl LANGUAGES CXX)
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)
66
endif()
77

8-
set(THIS_PACKAGE_INCLUDE_DEPENDS
9-
Eigen3
10-
kdl_parser
11-
kinematics_interface
12-
pluginlib
13-
tf2_eigen_kdl
14-
)
15-
16-
# find dependencies
17-
find_package(ament_cmake REQUIRED)
18-
foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS})
19-
find_package(${Dependency} REQUIRED)
20-
endforeach()
21-
8+
find_package(Eigen3 REQUIRED)
9+
find_package(kdl_parser REQUIRED)
10+
find_package(kinematics_interface REQUIRED)
11+
find_package(pluginlib REQUIRED)
12+
find_package(tf2_eigen_kdl REQUIRED)
2213

2314
add_library(
24-
${PROJECT_NAME}
15+
kinematics_interface_kdl
2516
SHARED
2617
src/kinematics_interface_kdl.cpp
2718
)
28-
target_include_directories(${PROJECT_NAME} PRIVATE include)
29-
ament_target_dependencies(${PROJECT_NAME} ${THIS_PACKAGE_INCLUDE_DEPENDS})
30-
31-
pluginlib_export_plugin_description_file(kinematics_interface kinematics_interface_kdl.xml)
32-
33-
install(
34-
TARGETS ${PROJECT_NAME}
35-
RUNTIME DESTINATION bin
36-
ARCHIVE DESTINATION lib
37-
LIBRARY DESTINATION lib
19+
target_include_directories(kinematics_interface_kdl PUBLIC
20+
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
21+
$<INSTALL_INTERFACE:include/kinematics_interface_kdl>
3822
)
39-
40-
install(
41-
DIRECTORY include/
42-
DESTINATION include
23+
target_compile_features(kinematics_interface_kdl PUBLIC cxx_std_17)
24+
target_link_libraries(kinematics_interface_kdl PUBLIC
25+
Eigen3::Eigen
26+
kdl_parser::kdl_parser
27+
kinematics_interface::kinematics_interface
28+
pluginlib::pluginlib
29+
tf2_eigen_kdl::tf2_eigen_kdl
4330
)
4431

32+
pluginlib_export_plugin_description_file(kinematics_interface kinematics_interface_kdl.xml)
4533

4634
if(BUILD_TESTING)
4735
find_package(ament_cmake_gmock REQUIRED)
4836
find_package(ros2_control_test_assets REQUIRED)
4937

5038
ament_add_gmock(
51-
test_${PROJECT_NAME}
39+
test_kinematics_interface_kdl
5240
test/test_kinematics_interface_kdl.cpp
5341
)
54-
target_include_directories(test_${PROJECT_NAME} PRIVATE include)
55-
target_link_libraries(test_${PROJECT_NAME} ${PROJECT_NAME})
56-
ament_target_dependencies(test_${PROJECT_NAME}
57-
${THIS_PACKAGE_INCLUDE_DEPENDS}
58-
ros2_control_test_assets
59-
)
42+
target_link_libraries(test_kinematics_interface_kdl kinematics_interface_kdl)
43+
44+
# TODO: Use target_link_libraries once ros2_control_test_assests
45+
# CMake include export is fixed
46+
ament_target_dependencies(test_kinematics_interface_kdl ros2_control_test_assets)
6047
endif()
6148

62-
ament_export_libraries(
63-
${PROJECT_NAME}
49+
install(
50+
DIRECTORY include/
51+
DESTINATION include/kinematics_interface_kdl
6452
)
65-
ament_export_include_directories(
66-
include
53+
install(
54+
TARGETS kinematics_interface_kdl
55+
EXPORT export_kinematics_interface_kdl
56+
ARCHIVE DESTINATION lib
57+
LIBRARY DESTINATION lib
58+
RUNTIME DESTINATION bin
6759
)
60+
61+
ament_export_targets(export_kinematics_interface_kdl HAS_LIBRARY_TARGET)
6862
ament_export_dependencies(
69-
${THIS_PACKAGE_INCLUDE_DEPENDS}
63+
Eigen3
64+
kdl_parser
65+
kinematics_interface
66+
pluginlib
67+
tf2_eigen_kdl
7068
)
71-
7269
ament_package()

0 commit comments

Comments
 (0)