Skip to content
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.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 36 additions & 38 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,7 @@
cmake_minimum_required(VERSION 3.5)
project(control_toolbox)
cmake_minimum_required(VERSION 3.16)
project(control_toolbox LANGUAGES CXX)

# Default to C++14
if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 14)
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()

Expand All @@ -18,58 +13,61 @@ if(WIN32)
)
endif()

set(THIS_PACKAGE_INCLUDE_DEPENDS
control_msgs
rclcpp
rcutils
realtime_tools
)

find_package(ament_cmake REQUIRED)
find_package(control_msgs REQUIRED)
find_package(rclcpp REQUIRED)
find_package(rcutils REQUIRED)
find_package(realtime_tools REQUIRED)
foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS})
find_package(${Dependency} REQUIRED)
endforeach()

add_library(${PROJECT_NAME} SHARED
add_library(control_toolbox SHARED
src/dither.cpp
src/limited_proxy.cpp
src/pid_ros.cpp
src/pid.cpp
src/sine_sweep.cpp
src/sinusoid.cpp)
target_include_directories(${PROJECT_NAME} PUBLIC include)
target_compile_definitions(${PROJECT_NAME} PRIVATE "CONTROL_TOOLBOX_BUILDING_LIBRARY")
ament_target_dependencies(${PROJECT_NAME}
control_msgs
rclcpp
rcutils
realtime_tools)
src/sinusoid.cpp
)
target_compile_features(control_toolbox PUBLIC cxx_std_17)
target_include_directories(control_toolbox PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include/control_toolbox>
)
ament_target_dependencies(control_toolbox PUBLIC ${THIS_PACKAGE_INCLUDE_DEPENDS})
target_compile_definitions(control_toolbox PRIVATE "CONTROL_TOOLBOX_BUILDING_LIBRARY")

if(BUILD_TESTING)
find_package(ament_cmake_gmock REQUIRED)
find_package(ament_cmake_gtest REQUIRED)
find_package(rclcpp_lifecycle REQUIRED)

ament_add_gmock(pid_tests test/pid_tests.cpp)
target_link_libraries(pid_tests ${PROJECT_NAME})
target_link_libraries(pid_tests control_toolbox)

ament_add_gtest(pid_parameters_tests test/pid_parameters_tests.cpp)
target_link_libraries(pid_parameters_tests ${PROJECT_NAME})
target_link_libraries(pid_parameters_tests control_toolbox)

ament_add_gtest(pid_publisher_tests test/pid_publisher_tests.cpp)
target_link_libraries(pid_publisher_tests ${PROJECT_NAME})
target_link_libraries(pid_publisher_tests control_toolbox)
ament_target_dependencies(pid_publisher_tests rclcpp_lifecycle)
endif()

# Install
install(DIRECTORY include/
DESTINATION include)

install(TARGETS ${PROJECT_NAME}
install(
DIRECTORY include/
DESTINATION include/control_toolbox
)
install(TARGETS control_toolbox
EXPORT export_control_toolbox
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin)

ament_export_dependencies(
control_msgs
rclcpp
rcutils
realtime_tools)
ament_export_include_directories(include)
ament_export_libraries(${PROJECT_NAME})
RUNTIME DESTINATION bin
)

ament_export_targets(export_control_toolbox HAS_LIBRARY_TARGET)
ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS})
ament_package()
5 changes: 1 addition & 4 deletions package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,7 @@

<buildtool_depend>ament_cmake</buildtool_depend>

<build_depend>control_msgs</build_depend>

<exec_depend>control_msgs</exec_depend>

<depend>control_msgs</depend>
<depend>rclcpp</depend>
<depend>rcutils</depend>
<depend>realtime_tools</depend>
Expand Down