|
| 1 | +cmake_minimum_required(VERSION 3.8) |
| 2 | +project(TODO_PACKAGE_NAME) |
| 3 | +include(FetchContent) |
| 4 | + |
| 5 | +if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") |
| 6 | + add_compile_options(-Wall -Wextra -Wpedantic) |
| 7 | +endif () |
| 8 | + |
| 9 | +# find dependencies |
| 10 | +find_package(ament_cmake REQUIRED) |
| 11 | +find_package(rclcpp REQUIRED) |
| 12 | +# Messages TODO_EXTRA |
| 13 | +find_package(ackermann_msgs REQUIRED) |
| 14 | +find_package(sensor_msgs REQUIRED) |
| 15 | +find_package(std_msgs REQUIRED) |
| 16 | +# OpenCV TODO_EXTRA |
| 17 | +find_package(cv_bridge REQUIRED) |
| 18 | +find_package(OpenCV 4.2.0 REQUIRED) |
| 19 | + |
| 20 | +# Add source for node executable (link non-ros dependencies here) |
| 21 | +add_executable(TODO_PACKAGE_NAME src/TODO_NODE_NAME.cpp src/TODO_NODE_NAME_node.cpp) |
| 22 | +target_include_directories(TODO_PACKAGE_NAME PUBLIC |
| 23 | + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> |
| 24 | + $<INSTALL_INTERFACE:include>) |
| 25 | +target_compile_features(TODO_PACKAGE_NAME PUBLIC c_std_99 cxx_std_17) # Require C99 and C++17 |
| 26 | + |
| 27 | +# Make ros deps a variable so they get linked to tests as well |
| 28 | +set(dependencies |
| 29 | + rclcpp |
| 30 | + # Messages TODO_EXTRA |
| 31 | + ackermann_msgs |
| 32 | + sensor_msgs |
| 33 | + std_msgs |
| 34 | + # OpenCv TODO_EXTRA |
| 35 | + cv_bridge |
| 36 | + OpenCV |
| 37 | + ) |
| 38 | + |
| 39 | +# Link ros dependencies |
| 40 | +ament_target_dependencies( |
| 41 | + TODO_PACKAGE_NAME |
| 42 | + ${dependencies} |
| 43 | +) |
| 44 | + |
| 45 | +install(TARGETS TODO_PACKAGE_NAME |
| 46 | + DESTINATION lib/${PROJECT_NAME}) |
| 47 | + |
| 48 | +# Uncomment below to make launch files available if created |
| 49 | +#install( |
| 50 | +# DIRECTORY launch config |
| 51 | +# DESTINATION share/${PROJECT_NAME}/ |
| 52 | +#) |
| 53 | + |
| 54 | +if (BUILD_TESTING) |
| 55 | + # Manually invoke clang format so it actually uses our file |
| 56 | + find_package(ament_cmake_clang_format REQUIRED) |
| 57 | + ament_clang_format(CONFIG_FILE ${CMAKE_CURRENT_SOURCE_DIR}/.clang-format) |
| 58 | + |
| 59 | + find_package(ament_cmake_gtest REQUIRED) |
| 60 | + |
| 61 | + # Add unit tests |
| 62 | + ament_add_gtest(${PROJECT_NAME}-test |
| 63 | + tests/unit.cpp |
| 64 | + # Remember to add node source files |
| 65 | + src/TODO_NODE_NAME_node.cpp |
| 66 | + ) |
| 67 | + ament_target_dependencies(${PROJECT_NAME}-test ${dependencies}) |
| 68 | + target_include_directories(${PROJECT_NAME}-test PUBLIC |
| 69 | + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> |
| 70 | + $<INSTALL_INTERFACE:include>) |
| 71 | +endif () |
| 72 | + |
| 73 | +ament_package() |
0 commit comments