forked from ros-controls/ros2_controllers
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix CMake install so overriding works (ros-controls#926)
Signed-off-by: Tyler Weaver <[email protected]>
- Loading branch information
Showing
10 changed files
with
322 additions
and
366 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,104 +1,88 @@ | ||
cmake_minimum_required(VERSION 3.5) | ||
project(controller_interface) | ||
cmake_minimum_required(VERSION 3.16) | ||
project(controller_interface 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) | ||
endif() | ||
|
||
set(THIS_PACKAGE_INCLUDE_DEPENDS | ||
hardware_interface | ||
rclcpp_lifecycle | ||
) | ||
|
||
find_package(ament_cmake REQUIRED) | ||
find_package(hardware_interface REQUIRED) | ||
find_package(rclcpp_lifecycle REQUIRED) | ||
foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS}) | ||
find_package(${Dependency} REQUIRED) | ||
endforeach() | ||
|
||
add_library( | ||
${PROJECT_NAME} | ||
SHARED | ||
add_library(controller_interface SHARED | ||
src/controller_interface_base.cpp | ||
src/controller_interface.cpp | ||
src/chainable_controller_interface.cpp | ||
) | ||
target_include_directories( | ||
${PROJECT_NAME} | ||
PRIVATE | ||
include | ||
) | ||
ament_target_dependencies( | ||
${PROJECT_NAME} | ||
hardware_interface | ||
rclcpp_lifecycle | ||
target_compile_features(controller_interface PUBLIC cxx_std_17) | ||
target_include_directories(controller_interface PUBLIC | ||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include> | ||
$<INSTALL_INTERFACE:include/controller_interface> | ||
) | ||
ament_target_dependencies(controller_interface 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 "CONTROLLER_INTERFACE_BUILDING_DLL") | ||
|
||
install(DIRECTORY include/ | ||
DESTINATION include | ||
) | ||
install(TARGETS ${PROJECT_NAME} | ||
ARCHIVE DESTINATION lib | ||
LIBRARY DESTINATION lib | ||
RUNTIME DESTINATION bin | ||
) | ||
target_compile_definitions(controller_interface PRIVATE "CONTROLLER_INTERFACE_BUILDING_DLL") | ||
|
||
if(BUILD_TESTING) | ||
find_package(ament_cmake_gmock REQUIRED) | ||
|
||
find_package(hardware_interface REQUIRED) | ||
find_package(sensor_msgs REQUIRED) | ||
|
||
ament_add_gmock(test_controller_interface test/test_controller_interface.cpp) | ||
target_link_libraries(test_controller_interface ${PROJECT_NAME}) | ||
target_include_directories(test_controller_interface PRIVATE include) | ||
target_link_libraries(test_controller_interface | ||
controller_interface | ||
) | ||
|
||
ament_add_gmock(test_controller_with_options test/test_controller_with_options.cpp) | ||
target_link_libraries(test_controller_with_options ${PROJECT_NAME}) | ||
target_include_directories(test_controller_with_options PRIVATE include) | ||
target_link_libraries(test_controller_with_options | ||
controller_interface | ||
) | ||
|
||
ament_add_gmock(test_chainable_controller_interface test/test_chainable_controller_interface.cpp) | ||
target_link_libraries(test_chainable_controller_interface ${PROJECT_NAME}) | ||
target_include_directories(test_chainable_controller_interface PRIVATE include) | ||
ament_target_dependencies(test_chainable_controller_interface hardware_interface) | ||
|
||
ament_add_gmock( | ||
test_semantic_component_interface | ||
test/test_semantic_component_interface.cpp | ||
) | ||
target_include_directories(test_semantic_component_interface PRIVATE include) | ||
ament_target_dependencies( | ||
test_semantic_component_interface | ||
hardware_interface | ||
target_link_libraries(test_chainable_controller_interface | ||
controller_interface | ||
hardware_interface::hardware_interface | ||
) | ||
|
||
ament_add_gmock( | ||
test_force_torque_sensor | ||
test/test_force_torque_sensor.cpp | ||
ament_add_gmock(test_semantic_component_interface test/test_semantic_component_interface.cpp) | ||
target_link_libraries(test_semantic_component_interface | ||
controller_interface | ||
hardware_interface::hardware_interface | ||
) | ||
target_include_directories(test_force_torque_sensor PRIVATE include) | ||
ament_target_dependencies( | ||
test_force_torque_sensor | ||
hardware_interface | ||
|
||
ament_add_gmock(test_force_torque_sensor test/test_force_torque_sensor.cpp) | ||
target_link_libraries(test_force_torque_sensor | ||
controller_interface | ||
hardware_interface::hardware_interface | ||
) | ||
|
||
ament_add_gmock( | ||
test_imu_sensor | ||
test/test_imu_sensor.cpp | ||
ament_add_gmock(test_imu_sensor test/test_imu_sensor.cpp) | ||
target_link_libraries(test_imu_sensor | ||
controller_interface | ||
hardware_interface::hardware_interface | ||
) | ||
target_include_directories(test_imu_sensor PRIVATE include) | ||
ament_target_dependencies( | ||
test_imu_sensor | ||
hardware_interface | ||
ament_target_dependencies(test_imu_sensor | ||
sensor_msgs | ||
) | ||
endif() | ||
|
||
ament_export_dependencies( | ||
hardware_interface | ||
rclcpp_lifecycle | ||
sensor_msgs | ||
) | ||
ament_export_include_directories( | ||
include | ||
install( | ||
DIRECTORY include/ | ||
DESTINATION include/controller_interface | ||
) | ||
ament_export_libraries( | ||
${PROJECT_NAME} | ||
install(TARGETS controller_interface | ||
EXPORT export_controller_interface | ||
ARCHIVE DESTINATION lib | ||
LIBRARY DESTINATION lib | ||
RUNTIME DESTINATION bin | ||
) | ||
|
||
ament_export_targets(export_controller_interface HAS_LIBRARY_TARGET) | ||
ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS}) | ||
ament_package() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.