cmake_minimum_required(VERSION 3.5) project(env_manager) # Default to C99 if(NOT CMAKE_C_STANDARD) set(CMAKE_C_STANDARD 99) endif() # Default to C++17 if(NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 17) endif() set(CMAKE_CXX_STANDARD_REQUIRED True) if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Wpedantic) endif() set(ENV_MANAGER_CONFIGURATION_FILES_DIRECTORY ${PROJECT_SOURCE_DIR}/config CACHE PATH ".lua configuration files dir") # find dependencies find_package(ament_cmake REQUIRED) find_package(ament_cmake_ros REQUIRED) find_package(Boost REQUIRED) find_package(rcl REQUIRED) find_package(rclcpp REQUIRED) find_package(rclcpp_components REQUIRED) find_package(rcutils REQUIRED) find_package(glog 0.4.0 REQUIRED) find_package(Lua 5.3 REQUIRED) add_library(env_manager SHARED src/component_manager/component_manager.cpp src/config/config_file_resolver.cpp src/config/lua_file_resolver.cpp src/config/options.cpp ) configure_file( ${PROJECT_SOURCE_DIR}/include/config/config.hpp.cmake ${PROJECT_BINARY_DIR}/include/config/config.hpp) target_include_directories(env_manager PUBLIC $ $) ament_target_dependencies( env_manager Boost rcl glog Lua class_loader rclcpp rclcpp_components ) target_include_directories(env_manager PUBLIC $) # Causes the visibility macros to use dllexport rather than dllimport, # which is appropriate when building the dll but not consuming it. target_compile_definitions(env_manager PRIVATE "COMPONENT_MANAGER_BUILDING_LIBRARY") if(NOT WIN32) ament_environment_hooks( "${ament_cmake_package_templates_ENVIRONMENT_HOOK_LIBRARY_PATH}") endif() add_executable(env_manager_node src/main.cpp ) target_link_libraries(env_manager_node env_manager lua glog) ament_target_dependencies( env_manager_node Boost rcl rclcpp glog Lua ) install(DIRECTORY config DESTINATION config) install( DIRECTORY include/ DESTINATION include ) install( TARGETS env_manager EXPORT export_${PROJECT_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin ) install( TARGETS env_manager_node DESTINATION lib/${PROJECT_NAME} ) if(BUILD_TESTING) find_package(ament_lint_auto REQUIRED) set(ament_cmake_cppcheck_FOUND TRUE) set(ament_cmake_copyright_FOUND TRUE) set(ament_cmake_cpplint_FOUND TRUE) set(ament_cmake_flake8_FOUND TRUE) set(ament_cmake_uncrustify_FOUND TRUE) set(ament_cmake_pep257_FOUND TRUE) set(ament_cmake_lint_cmake_FOUND TRUE) set(ament_cmake_xmllint_FOUND TRUE) ament_lint_auto_find_test_dependencies() find_package(ament_cmake_gtest REQUIRED) #include_directories(test) #ament_add_gtest(env_manager_test test/general.cpp) #target_link_libraries(env_manager_test env_manager lua glog) #set(TEST_TEST_FILES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/test_files) #set(TEST_LAUNCH_DIR ${CMAKE_CURRENT_SOURCE_DIR}/test_launch_files) #install(DIRECTORY # ${TEST_TEST_FILES_DIR} # DESTINATION share/${PROJECT_NAME} #) endif() ament_export_include_directories( include ) ament_export_libraries( env_manager ) ament_export_targets( export_${PROJECT_NAME} ) ament_export_dependencies(rcutils) ament_package()