Skip to content

Commit e416c5f

Browse files
committed
Fix overriding of install
Signed-off-by: Tyler Weaver <[email protected]>
1 parent 691e010 commit e416c5f

File tree

24 files changed

+675
-630
lines changed

24 files changed

+675
-630
lines changed

admittance_controller/CMakeLists.txt

Lines changed: 90 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,60 @@
1-
cmake_minimum_required(VERSION 3.5)
2-
project(admittance_controller)
1+
cmake_minimum_required(VERSION 3.16)
2+
project(admittance_controller LANGUAGES CXX)
33

4-
if(NOT CMAKE_CXX_STANDARD)
5-
set(CMAKE_CXX_STANDARD 17)
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-
# find dependencies
13-
set(THIS_PACKAGE_INCLUDE_DEPENDS
8+
find_package(ament_cmake REQUIRED)
9+
find_package(backward_ros REQUIRED)
10+
11+
find_package(angles REQUIRED)
12+
find_package(control_msgs REQUIRED)
13+
find_package(control_toolbox REQUIRED)
14+
find_package(controller_interface REQUIRED)
15+
find_package(Eigen3 REQUIRED)
16+
find_package(generate_parameter_library REQUIRED)
17+
find_package(geometry_msgs REQUIRED)
18+
find_package(hardware_interface REQUIRED)
19+
find_package(joint_trajectory_controller REQUIRED)
20+
find_package(kinematics_interface REQUIRED)
21+
find_package(pluginlib REQUIRED)
22+
find_package(rclcpp REQUIRED)
23+
find_package(rclcpp_lifecycle REQUIRED)
24+
find_package(realtime_tools REQUIRED)
25+
find_package(tf2 REQUIRED)
26+
find_package(tf2_eigen REQUIRED)
27+
find_package(tf2_geometry_msgs REQUIRED)
28+
find_package(tf2_kdl REQUIRED)
29+
find_package(tf2_ros REQUIRED)
30+
find_package(trajectory_msgs REQUIRED)
31+
32+
generate_parameter_library(admittance_controller_parameters
33+
src/admittance_controller_parameters.yaml
34+
)
35+
36+
add_library(admittance_controller SHARED
37+
src/admittance_controller.cpp
38+
)
39+
target_compile_features(admittance_controller PUBLIC cxx_std_17)
40+
target_include_directories(admittance_controller PUBLIC
41+
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
42+
$<INSTALL_INTERFACE:include/admittance_controller>
43+
)
44+
target_link_libraries(admittance_controller PUBLIC
45+
admittance_controller_parameters
46+
)
47+
ament_target_dependencies(admittance_controller PUBLIC
1448
angles
1549
control_msgs
1650
control_toolbox
1751
controller_interface
18-
kinematics_interface
1952
Eigen3
2053
generate_parameter_library
2154
geometry_msgs
2255
hardware_interface
2356
joint_trajectory_controller
57+
kinematics_interface
2458
pluginlib
2559
rclcpp
2660
rclcpp_lifecycle
@@ -33,72 +67,78 @@ set(THIS_PACKAGE_INCLUDE_DEPENDS
3367
trajectory_msgs
3468
)
3569

36-
find_package(ament_cmake REQUIRED)
37-
find_package(backward_ros REQUIRED)
38-
foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS})
39-
find_package(${Dependency} REQUIRED)
40-
endforeach()
41-
42-
add_library(admittance_controller SHARED src/admittance_controller.cpp)
43-
target_include_directories(admittance_controller PRIVATE include)
44-
generate_parameter_library(admittance_controller_parameters src/admittance_controller_parameters.yaml)
45-
target_link_libraries(admittance_controller admittance_controller_parameters)
46-
ament_target_dependencies(admittance_controller ${THIS_PACKAGE_INCLUDE_DEPENDS})
47-
4870
# Causes the visibility macros to use dllexport rather than dllimport,
4971
# which is appropriate when building the dll but not consuming it.
5072
target_compile_definitions(admittance_controller PRIVATE "ADMITTANCE_CONTROLLER_BUILDING_DLL")
5173

5274
pluginlib_export_plugin_description_file(controller_interface admittance_controller.xml)
5375

54-
install(DIRECTORY include/
55-
DESTINATION include
56-
)
57-
58-
install(TARGETS admittance_controller admittance_controller_parameters
59-
EXPORT export_admittance_controller
60-
RUNTIME DESTINATION bin
61-
ARCHIVE DESTINATION lib
62-
LIBRARY DESTINATION lib
63-
)
64-
6576
if(BUILD_TESTING)
6677
find_package(ament_cmake_gmock REQUIRED)
67-
find_package(control_msgs REQUIRED)
6878
find_package(controller_manager REQUIRED)
69-
find_package(controller_interface REQUIRED)
70-
find_package(hardware_interface REQUIRED)
7179
find_package(ros2_control_test_assets REQUIRED)
7280

81+
# Dynamically loaded durrint test
82+
find_package(kinematics_interface_kdl REQUIRED)
83+
7384
# test loading admittance controller
74-
add_rostest_with_parameters_gmock(test_load_admittance_controller test/test_load_admittance_controller.cpp
75-
${CMAKE_CURRENT_SOURCE_DIR}/test/test_params.yaml)
76-
target_include_directories(test_load_admittance_controller PUBLIC ${GMOCK_INCLUDE_DIRS})
77-
target_link_libraries(test_load_admittance_controller ${GMOCK_LIBRARIES})
78-
ament_target_dependencies(
79-
test_load_admittance_controller
85+
add_rostest_with_parameters_gmock(test_load_admittance_controller
86+
test/test_load_admittance_controller.cpp
87+
${CMAKE_CURRENT_SOURCE_DIR}/test/test_params.yaml
88+
)
89+
ament_target_dependencies(test_load_admittance_controller
8090
controller_manager
8191
hardware_interface
8292
ros2_control_test_assets
8393
)
94+
8495
# test admittance controller function
85-
add_rostest_with_parameters_gmock(test_admittance_controller test/test_admittance_controller.cpp
86-
${CMAKE_CURRENT_SOURCE_DIR}/test/test_params.yaml)
87-
target_include_directories(test_admittance_controller PRIVATE include)
96+
add_rostest_with_parameters_gmock(test_admittance_controller
97+
test/test_admittance_controller.cpp
98+
${CMAKE_CURRENT_SOURCE_DIR}/test/test_params.yaml
99+
)
88100
target_link_libraries(test_admittance_controller admittance_controller)
89-
ament_target_dependencies(
90-
test_admittance_controller
101+
ament_target_dependencies(test_admittance_controller
91102
control_msgs
92103
controller_interface
93104
hardware_interface
94105
ros2_control_test_assets
95106
)
96107
endif()
97108

98-
ament_export_targets(
99-
export_admittance_controller HAS_LIBRARY_TARGET
109+
install(
110+
DIRECTORY include/
111+
DESTINATION include/admittance_controller
112+
)
113+
114+
install(TARGETS admittance_controller admittance_controller_parameters
115+
EXPORT export_admittance_controller
116+
RUNTIME DESTINATION bin
117+
ARCHIVE DESTINATION lib
118+
LIBRARY DESTINATION lib
100119
)
120+
121+
ament_export_targets(export_admittance_controller HAS_LIBRARY_TARGET)
101122
ament_export_dependencies(
102-
${THIS_PACKAGE_INCLUDE_DEPENDS}
123+
angles
124+
control_msgs
125+
control_toolbox
126+
controller_interface
127+
Eigen3
128+
generate_parameter_library
129+
geometry_msgs
130+
hardware_interface
131+
joint_trajectory_controller
132+
kinematics_interface
133+
pluginlib
134+
rclcpp
135+
rclcpp_lifecycle
136+
realtime_tools
137+
tf2
138+
tf2_eigen
139+
tf2_geometry_msgs
140+
tf2_kdl
141+
tf2_ros
142+
trajectory_msgs
103143
)
104144
ament_package()

admittance_controller/package.xml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,7 @@
3333
<depend>trajectory_msgs</depend>
3434

3535
<test_depend>ament_cmake_gmock</test_depend>
36-
<test_depend>control_msgs</test_depend>
3736
<test_depend>controller_manager</test_depend>
38-
<test_depend>hardware_interface</test_depend>
3937
<test_depend>kinematics_interface_kdl</test_depend>
4038
<test_depend>ros2_control_test_assets</test_depend>
4139

diff_drive_controller/CMakeLists.txt

Lines changed: 59 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,61 @@
1-
cmake_minimum_required(VERSION 3.5)
2-
project(diff_drive_controller)
1+
cmake_minimum_required(VERSION 3.16)
2+
project(diff_drive_controller LANGUAGES CXX)
33

4-
# Default to C++17
5-
if(NOT CMAKE_CXX_STANDARD)
6-
set(CMAKE_CXX_STANDARD 17)
7-
set(CMAKE_CXX_STANDARD_REQUIRED ON)
8-
endif()
9-
10-
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
4+
if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)")
115
add_compile_options(-Wall -Wextra)
126
endif()
137

14-
set(THIS_PACKAGE_INCLUDE_DEPENDS
15-
controller_interface
16-
geometry_msgs
17-
hardware_interface
18-
nav_msgs
19-
pluginlib
20-
rclcpp
21-
rclcpp_lifecycle
22-
rcpputils
23-
realtime_tools
24-
tf2
25-
tf2_msgs
26-
)
27-
288
find_package(ament_cmake REQUIRED)
299
find_package(backward_ros REQUIRED)
30-
foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS})
31-
find_package(${Dependency} REQUIRED)
32-
endforeach()
3310

11+
find_package(controller_interface REQUIRED)
3412
find_package(generate_parameter_library REQUIRED)
13+
find_package(geometry_msgs REQUIRED)
14+
find_package(hardware_interface REQUIRED)
15+
find_package(nav_msgs REQUIRED)
16+
find_package(pluginlib REQUIRED)
17+
find_package(rclcpp REQUIRED)
18+
find_package(rclcpp_lifecycle REQUIRED)
19+
find_package(rcpputils REQUIRED)
20+
find_package(realtime_tools REQUIRED)
21+
find_package(tf2 REQUIRED)
22+
find_package(tf2_msgs REQUIRED)
3523

3624
generate_parameter_library(diff_drive_controller_parameters
3725
src/diff_drive_controller_parameter.yaml
3826
)
3927

40-
add_library(${PROJECT_NAME} SHARED
28+
add_library(diff_drive_controller SHARED
4129
src/diff_drive_controller.cpp
4230
src/odometry.cpp
4331
src/speed_limiter.cpp
4432
)
45-
target_include_directories(${PROJECT_NAME}
46-
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
47-
$<INSTALL_INTERFACE:include>)
48-
ament_target_dependencies(${PROJECT_NAME} ${THIS_PACKAGE_INCLUDE_DEPENDS})
49-
target_link_libraries(${PROJECT_NAME}
33+
target_compile_features(diff_drive_controller PUBLIC cxx_std_17)
34+
target_include_directories(diff_drive_controller PUBLIC
35+
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
36+
$<INSTALL_INTERFACE:include/diff_drive_controller>
37+
)
38+
target_link_libraries(diff_drive_controller PUBLIC
5039
diff_drive_controller_parameters
5140
)
41+
ament_target_dependencies(diff_drive_controller PUBLIC
42+
controller_interface
43+
geometry_msgs
44+
hardware_interface
45+
nav_msgs
46+
pluginlib
47+
rclcpp
48+
rclcpp_lifecycle
49+
rcpputils
50+
realtime_tools
51+
tf2
52+
tf2_msgs
53+
)
5254
# Causes the visibility macros to use dllexport rather than dllimport,
5355
# which is appropriate when building the dll but not consuming it.
54-
target_compile_definitions(${PROJECT_NAME} PRIVATE "DIFF_DRIVE_CONTROLLER_BUILDING_DLL")
56+
target_compile_definitions(diff_drive_controller PRIVATE "DIFF_DRIVE_CONTROLLER_BUILDING_DLL")
5557
pluginlib_export_plugin_description_file(controller_interface diff_drive_plugin.xml)
5658

57-
install(DIRECTORY include/
58-
DESTINATION include
59-
)
60-
61-
install(TARGETS ${PROJECT_NAME}
62-
RUNTIME DESTINATION bin
63-
ARCHIVE DESTINATION lib
64-
LIBRARY DESTINATION lib
65-
)
66-
6759
if(BUILD_TESTING)
6860
find_package(ament_cmake_gmock REQUIRED)
6961
find_package(controller_manager REQUIRED)
@@ -72,11 +64,9 @@ if(BUILD_TESTING)
7264
ament_add_gmock(test_diff_drive_controller
7365
test/test_diff_drive_controller.cpp
7466
ENV config_file=${CMAKE_CURRENT_SOURCE_DIR}/test/config/test_diff_drive_controller.yaml)
75-
target_include_directories(test_diff_drive_controller PRIVATE include)
7667
target_link_libraries(test_diff_drive_controller
77-
${PROJECT_NAME}
68+
diff_drive_controller
7869
)
79-
8070
ament_target_dependencies(test_diff_drive_controller
8171
geometry_msgs
8272
hardware_interface
@@ -88,25 +78,38 @@ if(BUILD_TESTING)
8878
tf2_msgs
8979
)
9080

91-
ament_add_gmock(
92-
test_load_diff_drive_controller
81+
ament_add_gmock(test_load_diff_drive_controller
9382
test/test_load_diff_drive_controller.cpp
9483
)
95-
target_include_directories(test_load_diff_drive_controller PRIVATE include)
9684
ament_target_dependencies(test_load_diff_drive_controller
9785
controller_manager
9886
ros2_control_test_assets
9987
)
100-
10188
endif()
10289

103-
ament_export_dependencies(
104-
${THIS_PACKAGE_INCLUDE_DEPENDS}
90+
install(
91+
DIRECTORY include/
92+
DESTINATION include/diff_drive_controller
10593
)
106-
ament_export_include_directories(
107-
include
94+
install(TARGETS diff_drive_controller diff_drive_controller_parameters
95+
EXPORT export_diff_drive_controller
96+
RUNTIME DESTINATION bin
97+
ARCHIVE DESTINATION lib
98+
LIBRARY DESTINATION lib
10899
)
109-
ament_export_libraries(
110-
${PROJECT_NAME}
100+
101+
ament_export_targets(export_diff_drive_controller HAS_LIBRARY_TARGET)
102+
ament_export_dependencies(
103+
controller_interface
104+
geometry_msgs
105+
hardware_interface
106+
nav_msgs
107+
pluginlib
108+
rclcpp
109+
rclcpp_lifecycle
110+
rcpputils
111+
realtime_tools
112+
tf2
113+
tf2_msgs
111114
)
112115
ament_package()

diff_drive_controller/package.xml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,14 @@
1616
<depend>geometry_msgs</depend>
1717
<depend>hardware_interface</depend>
1818
<depend>nav_msgs</depend>
19+
<depend>pluginlib</depend>
1920
<depend>rclcpp</depend>
2021
<depend>rclcpp_lifecycle</depend>
2122
<depend>rcpputils</depend>
2223
<depend>realtime_tools</depend>
2324
<depend>tf2</depend>
2425
<depend>tf2_msgs</depend>
2526

26-
<build_depend>pluginlib</build_depend>
27-
2827
<test_depend>ament_cmake_gmock</test_depend>
2928
<test_depend>controller_manager</test_depend>
3029
<test_depend>ros2_control_test_assets</test_depend>

0 commit comments

Comments
 (0)