2025-04-01 16:03:45 +02:00
|
|
|
cmake_minimum_required(VERSION 3.8)
|
|
|
|
project(priority_executor VERSION 0.1.0)
|
2022-03-29 13:51:58 -04:00
|
|
|
|
2025-04-01 16:03:45 +02:00
|
|
|
# Set C++ standards
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
2022-03-29 13:51:58 -04:00
|
|
|
|
2025-04-01 16:03:45 +02:00
|
|
|
# Compiler options
|
2022-03-29 13:51:58 -04:00
|
|
|
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
|
|
|
add_compile_options(-Wall -Wextra -Wpedantic)
|
|
|
|
endif()
|
|
|
|
|
2025-04-01 16:03:45 +02:00
|
|
|
# Find dependencies
|
2022-03-29 13:51:58 -04:00
|
|
|
find_package(ament_cmake REQUIRED)
|
2025-05-17 14:21:56 +02:00
|
|
|
find_package(tracetools REQUIRED)
|
2022-03-29 13:51:58 -04:00
|
|
|
find_package(rclcpp REQUIRED)
|
|
|
|
find_package(rcl REQUIRED)
|
2025-04-01 16:03:45 +02:00
|
|
|
find_package(rmw REQUIRED)
|
2022-03-29 13:51:58 -04:00
|
|
|
find_package(std_msgs REQUIRED)
|
|
|
|
find_package(std_srvs REQUIRED)
|
|
|
|
find_package(simple_timer REQUIRED)
|
2025-04-13 20:58:23 +02:00
|
|
|
find_package(nlohmann_json REQUIRED)
|
2022-03-29 13:51:58 -04:00
|
|
|
|
2025-04-01 16:03:45 +02:00
|
|
|
# Library targets
|
|
|
|
add_library(priority_executor
|
|
|
|
src/priority_executor.cpp
|
|
|
|
src/priority_memory_strategy.cpp
|
2025-04-13 20:58:23 +02:00
|
|
|
src/performance_monitor.cpp
|
|
|
|
src/default_executor.cpp
|
|
|
|
src/usage_example.cpp
|
|
|
|
src/multithread_priority_executor.cpp
|
2025-04-01 16:03:45 +02:00
|
|
|
)
|
2022-03-29 13:51:58 -04:00
|
|
|
target_include_directories(priority_executor PUBLIC
|
|
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
|
|
|
$<INSTALL_INTERFACE:include>
|
|
|
|
)
|
|
|
|
ament_target_dependencies(priority_executor
|
2025-05-17 14:21:56 +02:00
|
|
|
tracetools
|
2022-03-29 13:51:58 -04:00
|
|
|
rmw
|
|
|
|
rclcpp
|
|
|
|
rcl
|
2023-01-17 15:03:29 -05:00
|
|
|
simple_timer
|
2025-04-13 20:58:23 +02:00
|
|
|
nlohmann_json
|
2023-07-16 20:01:06 -04:00
|
|
|
)
|
|
|
|
|
2025-04-01 16:03:45 +02:00
|
|
|
# Example executable
|
|
|
|
add_executable(usage_example
|
|
|
|
src/usage_example.cpp
|
|
|
|
)
|
2022-04-02 18:13:46 -04:00
|
|
|
target_include_directories(usage_example PUBLIC
|
|
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
2025-04-01 16:03:45 +02:00
|
|
|
$<INSTALL_INTERFACE:include>
|
|
|
|
)
|
2022-04-02 18:13:46 -04:00
|
|
|
target_link_libraries(usage_example
|
|
|
|
priority_executor
|
|
|
|
)
|
|
|
|
ament_target_dependencies(usage_example
|
2025-05-17 14:21:56 +02:00
|
|
|
tracetools
|
2022-04-02 18:13:46 -04:00
|
|
|
rclcpp
|
|
|
|
std_msgs
|
|
|
|
std_srvs
|
2025-04-01 16:03:45 +02:00
|
|
|
simple_timer
|
2022-04-02 18:13:46 -04:00
|
|
|
)
|
|
|
|
|
2025-04-01 16:03:45 +02:00
|
|
|
# Testing
|
|
|
|
if(BUILD_TESTING)
|
|
|
|
find_package(ament_lint_auto REQUIRED)
|
|
|
|
ament_lint_auto_find_test_dependencies()
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# Installation
|
2023-01-17 15:03:29 -05:00
|
|
|
install(
|
|
|
|
DIRECTORY include/
|
|
|
|
DESTINATION include
|
|
|
|
)
|
|
|
|
|
2025-04-01 16:03:45 +02:00
|
|
|
install(
|
2025-04-13 20:58:23 +02:00
|
|
|
TARGETS priority_executor
|
2025-04-01 16:03:45 +02:00
|
|
|
EXPORT export_${PROJECT_NAME}
|
2023-01-17 15:03:29 -05:00
|
|
|
ARCHIVE DESTINATION lib
|
|
|
|
LIBRARY DESTINATION lib
|
|
|
|
RUNTIME DESTINATION bin
|
2025-04-01 16:03:45 +02:00
|
|
|
INCLUDES DESTINATION include
|
|
|
|
)
|
|
|
|
|
|
|
|
install(
|
|
|
|
TARGETS usage_example
|
|
|
|
RUNTIME DESTINATION lib/${PROJECT_NAME}
|
2023-01-17 15:03:29 -05:00
|
|
|
)
|
2022-03-29 13:51:58 -04:00
|
|
|
|
2025-04-01 16:03:45 +02:00
|
|
|
# Export and package configuration
|
2023-01-17 15:03:29 -05:00
|
|
|
ament_export_include_directories(include)
|
2025-04-01 16:03:45 +02:00
|
|
|
ament_export_targets(export_${PROJECT_NAME} HAS_LIBRARY_TARGET)
|
2025-04-13 20:58:23 +02:00
|
|
|
ament_export_dependencies(rclcpp rcl rmw simple_timer nlohmann_json)
|
2022-03-29 13:51:58 -04:00
|
|
|
ament_package()
|