cmake_minimum_required(VERSION 3.8) project(priority_executor VERSION 0.1.0) # Set C++ standards set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) # Compiler options if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Wpedantic) endif() # Find dependencies find_package(ament_cmake REQUIRED) find_package(tracetools REQUIRED) find_package(rclcpp REQUIRED) find_package(rcl REQUIRED) find_package(rmw REQUIRED) find_package(std_msgs REQUIRED) find_package(std_srvs REQUIRED) find_package(simple_timer REQUIRED) find_package(nlohmann_json REQUIRED) # Library targets add_library(priority_executor src/priority_executor.cpp src/priority_memory_strategy.cpp src/performance_monitor.cpp src/default_executor.cpp src/usage_example.cpp src/multithread_priority_executor.cpp ) target_include_directories(priority_executor PUBLIC $ $ ) ament_target_dependencies(priority_executor tracetools rmw rclcpp rcl simple_timer nlohmann_json ) # Example executable add_executable(usage_example src/usage_example.cpp ) target_include_directories(usage_example PUBLIC $ $ ) target_link_libraries(usage_example priority_executor ) ament_target_dependencies(usage_example tracetools rclcpp std_msgs std_srvs simple_timer ) # Testing if(BUILD_TESTING) find_package(ament_lint_auto REQUIRED) ament_lint_auto_find_test_dependencies() endif() # Installation install( DIRECTORY include/ DESTINATION include ) install( TARGETS priority_executor EXPORT export_${PROJECT_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin INCLUDES DESTINATION include ) install( TARGETS usage_example RUNTIME DESTINATION lib/${PROJECT_NAME} ) # Export and package configuration ament_export_include_directories(include) ament_export_targets(export_${PROJECT_NAME} HAS_LIBRARY_TARGET) ament_export_dependencies(rclcpp rcl rmw simple_timer nlohmann_json) ament_package()