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 #105

Merged
merged 2 commits into from
Jan 28, 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.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 59 additions & 40 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,68 +1,87 @@
cmake_minimum_required(VERSION 3.5)
project(realtime_tools)
cmake_minimum_required(VERSION 3.16)
project(realtime_tools LANGUAGES CXX)

if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 14)
if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)")
add_compile_options(-Wall -Wextra)
endif()

# Load catkin and all dependencies required for this package
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(rclcpp_action REQUIRED)
find_package(Threads REQUIRED)
set(THIS_PACKAGE_INCLUDE_DEPENDS
rclcpp
rclcpp_action
Threads
)

add_library(${PROJECT_NAME} src/realtime_clock.cpp)
ament_target_dependencies(${PROJECT_NAME} "rclcpp" "rclcpp_action")
target_link_libraries(${PROJECT_NAME} ${CMAKE_THREAD_LIBS_INIT})
target_include_directories(${PROJECT_NAME} PUBLIC include)
find_package(ament_cmake REQUIRED)
foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS})
find_package(${Dependency} REQUIRED)
endforeach()

add_library(realtime_tools SHARED
src/realtime_clock.cpp
)
target_compile_features(realtime_tools PUBLIC cxx_std_17)
target_include_directories(realtime_tools PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include/realtime_tools>
)
ament_target_dependencies(realtime_tools PUBLIC ${THIS_PACKAGE_INCLUDE_DEPENDS})

# A library to detect a realtime kernel and set thread priority, if one is found
add_library(thread_priority SHARED src/thread_priority.cpp)
target_include_directories(thread_priority PUBLIC include)
ament_target_dependencies(thread_priority "rclcpp" "rclcpp_action")
add_library(thread_priority SHARED
src/thread_priority.cpp
)
target_compile_features(thread_priority PUBLIC cxx_std_17)
target_include_directories(thread_priority PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include/realtime_tools>
)
ament_target_dependencies(thread_priority PUBLIC ${THIS_PACKAGE_INCLUDE_DEPENDS})

# Unit Tests
if(BUILD_TESTING)
find_package(ament_cmake_gmock REQUIRED)
find_package(test_msgs REQUIRED)

ament_add_gmock(realtime_box_tests test/realtime_box_tests.cpp)
target_link_libraries(realtime_box_tests ${PROJECT_NAME} ${GMOCK_MAIN_LIBRARIES})
target_link_libraries(realtime_box_tests realtime_tools)

ament_add_gmock(realtime_buffer_tests test/realtime_buffer_tests.cpp)
target_link_libraries(realtime_buffer_tests ${PROJECT_NAME} ${GMOCK_MAIN_LIBRARIES})
target_link_libraries(realtime_buffer_tests realtime_tools)

ament_add_gmock(realtime_clock_tests test/realtime_clock_tests.cpp)
target_link_libraries(realtime_clock_tests ${PROJECT_NAME} ${GMOCK_MAIN_LIBRARIES})
target_link_libraries(realtime_clock_tests realtime_tools)

ament_add_gmock(realtime_publisher_tests_non_polling
test/realtime_publisher_non_polling.test test/realtime_publisher_tests_non_polling.cpp)
target_link_libraries(realtime_publisher_tests_non_polling ${PROJECT_NAME} ${test_msgs_LIBRARIES} ${GMOCK_MAIN_LIBRARIES})
target_include_directories(realtime_publisher_tests_non_polling PRIVATE ${test_msgs_INCLUDE_DIRS})

ament_add_gmock(realtime_publisher_tests test/realtime_publisher.test test/realtime_publisher_tests.cpp)
target_link_libraries(realtime_publisher_tests ${PROJECT_NAME} ${test_msgs_LIBRARIES} ${GMOCK_MAIN_LIBRARIES})
target_include_directories(realtime_publisher_tests PRIVATE ${test_msgs_INCLUDE_DIRS})

ament_add_gmock(realtime_server_goal_handle_tests test/realtime_server_goal_handle.test test/realtime_server_goal_handle_tests.cpp)
target_link_libraries(realtime_server_goal_handle_tests ${PROJECT_NAME} ${test_msgs_LIBRARIES} ${GMOCK_MAIN_LIBRARIES})
target_include_directories(realtime_server_goal_handle_tests PRIVATE ${test_msgs_INCLUDE_DIRS})
test/realtime_publisher_non_polling.test
test/realtime_publisher_tests_non_polling.cpp)
target_link_libraries(realtime_publisher_tests_non_polling realtime_tools)
ament_target_dependencies(realtime_publisher_tests_non_polling test_msgs)

ament_add_gmock(realtime_publisher_tests
test/realtime_publisher.test
test/realtime_publisher_tests.cpp)
target_link_libraries(realtime_publisher_tests realtime_tools)
ament_target_dependencies(realtime_publisher_tests test_msgs)

ament_add_gmock(realtime_server_goal_handle_tests
test/realtime_server_goal_handle.test
test/realtime_server_goal_handle_tests.cpp)
target_link_libraries(realtime_server_goal_handle_tests realtime_tools)
ament_target_dependencies(realtime_server_goal_handle_tests test_msgs)
endif()

# Install
install(
DIRECTORY include/
DESTINATION include)

install(TARGETS ${PROJECT_NAME} thread_priority
DESTINATION include/realtime_tools
)
install(TARGETS realtime_tools thread_priority
EXPORT export_realtime_tools
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
RUNTIME DESTINATION bin)

ament_export_include_directories(include)
ament_export_libraries(${PROJECT_NAME} thread_priority)

ament_export_dependencies(rclcpp)
ament_export_dependencies(rclcpp_action)
RUNTIME DESTINATION bin
)

ament_export_targets(export_realtime_tools HAS_LIBRARY_TARGET)
ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS})
ament_package()
1 change: 0 additions & 1 deletion package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
<depend>rclcpp_action</depend>

<test_depend>ament_cmake_gmock</test_depend>
<test_depend>rclcpp_action</test_depend>
<test_depend>test_msgs</test_depend>

<export>
Expand Down