Skip to content

Commit 2ce1f21

Browse files
Fix overriding of install (#510)
* Fix overriding of install Signed-off-by: Tyler Weaver <[email protected]> * Update admittance_controller/CMakeLists.txt Co-authored-by: Chris Thrasher <[email protected]> * Update ros2_controllers/CMakeLists.txt Co-authored-by: Chris Thrasher <[email protected]> * Remove unused lists * Use THIS_PACKAGE_INCLUDE_DEPENDS list --------- Signed-off-by: Tyler Weaver <[email protected]> Co-authored-by: Chris Thrasher <[email protected]>
1 parent 2a870b2 commit 2ce1f21

File tree

24 files changed

+465
-627
lines changed

24 files changed

+465
-627
lines changed

admittance_controller/CMakeLists.txt

Lines changed: 46 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,21 @@
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
138
set(THIS_PACKAGE_INCLUDE_DEPENDS
149
angles
1510
control_msgs
1611
control_toolbox
1712
controller_interface
18-
kinematics_interface
1913
Eigen3
2014
generate_parameter_library
2115
geometry_msgs
2216
hardware_interface
2317
joint_trajectory_controller
18+
kinematics_interface
2419
pluginlib
2520
rclcpp
2621
rclcpp_lifecycle
@@ -39,66 +34,74 @@ foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS})
3934
find_package(${Dependency} REQUIRED)
4035
endforeach()
4136

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})
37+
generate_parameter_library(admittance_controller_parameters
38+
src/admittance_controller_parameters.yaml
39+
)
40+
41+
add_library(admittance_controller SHARED
42+
src/admittance_controller.cpp
43+
)
44+
target_compile_features(admittance_controller PUBLIC cxx_std_17)
45+
target_include_directories(admittance_controller PUBLIC
46+
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
47+
$<INSTALL_INTERFACE:include/admittance_controller>
48+
)
49+
target_link_libraries(admittance_controller PUBLIC
50+
admittance_controller_parameters
51+
)
52+
ament_target_dependencies(admittance_controller PUBLIC ${THIS_PACKAGE_INCLUDE_DEPENDS})
4753

4854
# Causes the visibility macros to use dllexport rather than dllimport,
4955
# which is appropriate when building the dll but not consuming it.
5056
target_compile_definitions(admittance_controller PRIVATE "ADMITTANCE_CONTROLLER_BUILDING_DLL")
5157

5258
pluginlib_export_plugin_description_file(controller_interface admittance_controller.xml)
5359

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-
6560
if(BUILD_TESTING)
6661
find_package(ament_cmake_gmock REQUIRED)
67-
find_package(control_msgs REQUIRED)
6862
find_package(controller_manager REQUIRED)
69-
find_package(controller_interface REQUIRED)
70-
find_package(hardware_interface REQUIRED)
7163
find_package(ros2_control_test_assets REQUIRED)
7264

65+
# Dynamically loaded during test
66+
find_package(kinematics_interface_kdl REQUIRED)
67+
7368
# 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
69+
add_rostest_with_parameters_gmock(test_load_admittance_controller
70+
test/test_load_admittance_controller.cpp
71+
${CMAKE_CURRENT_SOURCE_DIR}/test/test_params.yaml
72+
)
73+
ament_target_dependencies(test_load_admittance_controller
8074
controller_manager
8175
hardware_interface
8276
ros2_control_test_assets
8377
)
78+
8479
# 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)
80+
add_rostest_with_parameters_gmock(test_admittance_controller
81+
test/test_admittance_controller.cpp
82+
${CMAKE_CURRENT_SOURCE_DIR}/test/test_params.yaml
83+
)
8884
target_link_libraries(test_admittance_controller admittance_controller)
89-
ament_target_dependencies(
90-
test_admittance_controller
85+
ament_target_dependencies(test_admittance_controller
9186
control_msgs
9287
controller_interface
9388
hardware_interface
9489
ros2_control_test_assets
9590
)
9691
endif()
9792

98-
ament_export_targets(
99-
export_admittance_controller HAS_LIBRARY_TARGET
93+
install(
94+
DIRECTORY include/
95+
DESTINATION include/admittance_controller
10096
)
101-
ament_export_dependencies(
102-
${THIS_PACKAGE_INCLUDE_DEPENDS}
97+
98+
install(TARGETS admittance_controller admittance_controller_parameters
99+
EXPORT export_admittance_controller
100+
RUNTIME DESTINATION bin
101+
ARCHIVE DESTINATION lib
102+
LIBRARY DESTINATION lib
103103
)
104+
105+
ament_export_targets(export_admittance_controller HAS_LIBRARY_TARGET)
106+
ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS})
104107
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: 36 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,23 @@
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

148
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
9+
controller_interface
10+
generate_parameter_library
11+
geometry_msgs
12+
hardware_interface
13+
nav_msgs
14+
pluginlib
15+
rclcpp
16+
rclcpp_lifecycle
17+
rcpputils
18+
realtime_tools
19+
tf2
20+
tf2_msgs
2621
)
2722

2823
find_package(ament_cmake REQUIRED)
@@ -31,39 +26,27 @@ foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS})
3126
find_package(${Dependency} REQUIRED)
3227
endforeach()
3328

34-
find_package(generate_parameter_library REQUIRED)
35-
3629
generate_parameter_library(diff_drive_controller_parameters
3730
src/diff_drive_controller_parameter.yaml
3831
)
3932

40-
add_library(${PROJECT_NAME} SHARED
33+
add_library(diff_drive_controller SHARED
4134
src/diff_drive_controller.cpp
4235
src/odometry.cpp
4336
src/speed_limiter.cpp
4437
)
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}
50-
diff_drive_controller_parameters
38+
target_compile_features(diff_drive_controller PUBLIC cxx_std_17)
39+
target_include_directories(diff_drive_controller PUBLIC
40+
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
41+
$<INSTALL_INTERFACE:include/diff_drive_controller>
5142
)
43+
target_link_libraries(diff_drive_controller PUBLIC diff_drive_controller_parameters)
44+
ament_target_dependencies(diff_drive_controller PUBLIC ${THIS_PACKAGE_INCLUDE_DEPENDS})
5245
# Causes the visibility macros to use dllexport rather than dllimport,
5346
# which is appropriate when building the dll but not consuming it.
54-
target_compile_definitions(${PROJECT_NAME} PRIVATE "DIFF_DRIVE_CONTROLLER_BUILDING_DLL")
47+
target_compile_definitions(diff_drive_controller PRIVATE "DIFF_DRIVE_CONTROLLER_BUILDING_DLL")
5548
pluginlib_export_plugin_description_file(controller_interface diff_drive_plugin.xml)
5649

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-
6750
if(BUILD_TESTING)
6851
find_package(ament_cmake_gmock REQUIRED)
6952
find_package(controller_manager REQUIRED)
@@ -72,11 +55,9 @@ if(BUILD_TESTING)
7255
ament_add_gmock(test_diff_drive_controller
7356
test/test_diff_drive_controller.cpp
7457
ENV config_file=${CMAKE_CURRENT_SOURCE_DIR}/test/config/test_diff_drive_controller.yaml)
75-
target_include_directories(test_diff_drive_controller PRIVATE include)
7658
target_link_libraries(test_diff_drive_controller
77-
${PROJECT_NAME}
59+
diff_drive_controller
7860
)
79-
8061
ament_target_dependencies(test_diff_drive_controller
8162
geometry_msgs
8263
hardware_interface
@@ -88,25 +69,26 @@ if(BUILD_TESTING)
8869
tf2_msgs
8970
)
9071

91-
ament_add_gmock(
92-
test_load_diff_drive_controller
72+
ament_add_gmock(test_load_diff_drive_controller
9373
test/test_load_diff_drive_controller.cpp
9474
)
95-
target_include_directories(test_load_diff_drive_controller PRIVATE include)
9675
ament_target_dependencies(test_load_diff_drive_controller
9776
controller_manager
9877
ros2_control_test_assets
9978
)
100-
10179
endif()
10280

103-
ament_export_dependencies(
104-
${THIS_PACKAGE_INCLUDE_DEPENDS}
105-
)
106-
ament_export_include_directories(
107-
include
81+
install(
82+
DIRECTORY include/
83+
DESTINATION include/diff_drive_controller
10884
)
109-
ament_export_libraries(
110-
${PROJECT_NAME}
85+
install(TARGETS diff_drive_controller diff_drive_controller_parameters
86+
EXPORT export_diff_drive_controller
87+
RUNTIME DESTINATION bin
88+
ARCHIVE DESTINATION lib
89+
LIBRARY DESTINATION lib
11190
)
91+
92+
ament_export_targets(export_diff_drive_controller HAS_LIBRARY_TARGET)
93+
ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS})
11294
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)