Skip to content
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

Fix overriding of install #510

Merged
merged 5 commits into from Feb 10, 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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
89 changes: 46 additions & 43 deletions admittance_controller/CMakeLists.txt
@@ -1,26 +1,21 @@
cmake_minimum_required(VERSION 3.5)
project(admittance_controller)
cmake_minimum_required(VERSION 3.16)
project(admittance_controller LANGUAGES CXX)

if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 17)
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()

# find dependencies
set(THIS_PACKAGE_INCLUDE_DEPENDS
angles
control_msgs
control_toolbox
controller_interface
kinematics_interface
Eigen3
generate_parameter_library
geometry_msgs
hardware_interface
joint_trajectory_controller
kinematics_interface
pluginlib
rclcpp
rclcpp_lifecycle
Expand All @@ -39,66 +34,74 @@ foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS})
find_package(${Dependency} REQUIRED)
endforeach()

add_library(admittance_controller SHARED src/admittance_controller.cpp)
target_include_directories(admittance_controller PRIVATE include)
generate_parameter_library(admittance_controller_parameters src/admittance_controller_parameters.yaml)
target_link_libraries(admittance_controller admittance_controller_parameters)
ament_target_dependencies(admittance_controller ${THIS_PACKAGE_INCLUDE_DEPENDS})
generate_parameter_library(admittance_controller_parameters
src/admittance_controller_parameters.yaml
)

add_library(admittance_controller SHARED
src/admittance_controller.cpp
)
target_compile_features(admittance_controller PUBLIC cxx_std_17)
target_include_directories(admittance_controller PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include/admittance_controller>
)
target_link_libraries(admittance_controller PUBLIC
admittance_controller_parameters
)
ament_target_dependencies(admittance_controller PUBLIC ${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(admittance_controller PRIVATE "ADMITTANCE_CONTROLLER_BUILDING_DLL")

pluginlib_export_plugin_description_file(controller_interface admittance_controller.xml)

install(DIRECTORY include/
DESTINATION include
)

install(TARGETS admittance_controller admittance_controller_parameters
EXPORT export_admittance_controller
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
)

if(BUILD_TESTING)
find_package(ament_cmake_gmock REQUIRED)
find_package(control_msgs REQUIRED)
find_package(controller_manager REQUIRED)
find_package(controller_interface REQUIRED)
find_package(hardware_interface REQUIRED)
find_package(ros2_control_test_assets REQUIRED)

# Dynamically loaded during test
find_package(kinematics_interface_kdl REQUIRED)

# test loading admittance controller
add_rostest_with_parameters_gmock(test_load_admittance_controller test/test_load_admittance_controller.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test/test_params.yaml)
target_include_directories(test_load_admittance_controller PUBLIC ${GMOCK_INCLUDE_DIRS})
target_link_libraries(test_load_admittance_controller ${GMOCK_LIBRARIES})
ament_target_dependencies(
test_load_admittance_controller
add_rostest_with_parameters_gmock(test_load_admittance_controller
test/test_load_admittance_controller.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test/test_params.yaml
)
ament_target_dependencies(test_load_admittance_controller
controller_manager
hardware_interface
ros2_control_test_assets
)

# test admittance controller function
add_rostest_with_parameters_gmock(test_admittance_controller test/test_admittance_controller.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test/test_params.yaml)
target_include_directories(test_admittance_controller PRIVATE include)
add_rostest_with_parameters_gmock(test_admittance_controller
test/test_admittance_controller.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test/test_params.yaml
)
target_link_libraries(test_admittance_controller admittance_controller)
ament_target_dependencies(
test_admittance_controller
ament_target_dependencies(test_admittance_controller
control_msgs
controller_interface
hardware_interface
ros2_control_test_assets
)
endif()

ament_export_targets(
export_admittance_controller HAS_LIBRARY_TARGET
install(
DIRECTORY include/
DESTINATION include/admittance_controller
)
ament_export_dependencies(
${THIS_PACKAGE_INCLUDE_DEPENDS}

install(TARGETS admittance_controller admittance_controller_parameters
EXPORT export_admittance_controller
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
)

ament_export_targets(export_admittance_controller HAS_LIBRARY_TARGET)
ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS})
ament_package()
2 changes: 0 additions & 2 deletions admittance_controller/package.xml
Expand Up @@ -33,9 +33,7 @@
<depend>trajectory_msgs</depend>

<test_depend>ament_cmake_gmock</test_depend>
<test_depend>control_msgs</test_depend>
<test_depend>controller_manager</test_depend>
<test_depend>hardware_interface</test_depend>
<test_depend>kinematics_interface_kdl</test_depend>
<test_depend>ros2_control_test_assets</test_depend>

Expand Down
90 changes: 36 additions & 54 deletions diff_drive_controller/CMakeLists.txt
@@ -1,28 +1,23 @@
cmake_minimum_required(VERSION 3.5)
project(diff_drive_controller)
cmake_minimum_required(VERSION 3.16)
project(diff_drive_controller LANGUAGES CXX)

# Default to C++17
if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
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)
endif()

set(THIS_PACKAGE_INCLUDE_DEPENDS
controller_interface
geometry_msgs
hardware_interface
nav_msgs
pluginlib
rclcpp
rclcpp_lifecycle
rcpputils
realtime_tools
tf2
tf2_msgs
controller_interface
generate_parameter_library
geometry_msgs
hardware_interface
nav_msgs
pluginlib
rclcpp
rclcpp_lifecycle
rcpputils
realtime_tools
tf2
tf2_msgs
)

find_package(ament_cmake REQUIRED)
Expand All @@ -31,39 +26,27 @@ foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS})
find_package(${Dependency} REQUIRED)
endforeach()

find_package(generate_parameter_library REQUIRED)

generate_parameter_library(diff_drive_controller_parameters
src/diff_drive_controller_parameter.yaml
)

add_library(${PROJECT_NAME} SHARED
add_library(diff_drive_controller SHARED
src/diff_drive_controller.cpp
src/odometry.cpp
src/speed_limiter.cpp
)
target_include_directories(${PROJECT_NAME}
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>)
ament_target_dependencies(${PROJECT_NAME} ${THIS_PACKAGE_INCLUDE_DEPENDS})
target_link_libraries(${PROJECT_NAME}
diff_drive_controller_parameters
target_compile_features(diff_drive_controller PUBLIC cxx_std_17)
target_include_directories(diff_drive_controller PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include/diff_drive_controller>
)
target_link_libraries(diff_drive_controller PUBLIC diff_drive_controller_parameters)
ament_target_dependencies(diff_drive_controller PUBLIC ${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(${PROJECT_NAME} PRIVATE "DIFF_DRIVE_CONTROLLER_BUILDING_DLL")
target_compile_definitions(diff_drive_controller PRIVATE "DIFF_DRIVE_CONTROLLER_BUILDING_DLL")
pluginlib_export_plugin_description_file(controller_interface diff_drive_plugin.xml)

install(DIRECTORY include/
DESTINATION include
)

install(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
)

if(BUILD_TESTING)
find_package(ament_cmake_gmock REQUIRED)
find_package(controller_manager REQUIRED)
Expand All @@ -72,11 +55,9 @@ if(BUILD_TESTING)
ament_add_gmock(test_diff_drive_controller
test/test_diff_drive_controller.cpp
ENV config_file=${CMAKE_CURRENT_SOURCE_DIR}/test/config/test_diff_drive_controller.yaml)
target_include_directories(test_diff_drive_controller PRIVATE include)
target_link_libraries(test_diff_drive_controller
${PROJECT_NAME}
diff_drive_controller
)

ament_target_dependencies(test_diff_drive_controller
geometry_msgs
hardware_interface
Expand All @@ -88,25 +69,26 @@ if(BUILD_TESTING)
tf2_msgs
)

ament_add_gmock(
test_load_diff_drive_controller
ament_add_gmock(test_load_diff_drive_controller
test/test_load_diff_drive_controller.cpp
)
target_include_directories(test_load_diff_drive_controller PRIVATE include)
ament_target_dependencies(test_load_diff_drive_controller
controller_manager
ros2_control_test_assets
)

endif()

ament_export_dependencies(
${THIS_PACKAGE_INCLUDE_DEPENDS}
)
ament_export_include_directories(
include
install(
DIRECTORY include/
DESTINATION include/diff_drive_controller
)
ament_export_libraries(
${PROJECT_NAME}
install(TARGETS diff_drive_controller diff_drive_controller_parameters
EXPORT export_diff_drive_controller
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
)

ament_export_targets(export_diff_drive_controller HAS_LIBRARY_TARGET)
ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS})
ament_package()
3 changes: 1 addition & 2 deletions diff_drive_controller/package.xml
Expand Up @@ -16,15 +16,14 @@
<depend>geometry_msgs</depend>
<depend>hardware_interface</depend>
<depend>nav_msgs</depend>
<depend>pluginlib</depend>
<depend>rclcpp</depend>
<depend>rclcpp_lifecycle</depend>
<depend>rcpputils</depend>
<depend>realtime_tools</depend>
<depend>tf2</depend>
<depend>tf2_msgs</depend>

<build_depend>pluginlib</build_depend>

<test_depend>ament_cmake_gmock</test_depend>
<test_depend>controller_manager</test_depend>
<test_depend>ros2_control_test_assets</test_depend>
Expand Down