cmake_minimum_required(VERSION 3.8) project(camera_calibration) 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(rclcpp REQUIRED) find_package(std_msgs REQUIRED) find_package(sensor_msgs REQUIRED) find_package(image_transport REQUIRED) find_package(cv_bridge REQUIRED) find_package(OpenCV REQUIRED) find_package(Eigen3 REQUIRED) find_package(rm_interfaces REQUIRED) include_directories( include ${OpenCV_INCLUDE_DIRS} ${EIGEN3_INCLUDE_DIRS} ) # Node library - without rclcpp_components registration add_library(camera_calibration_lib SHARED src/calibration_node.cpp ) ament_target_dependencies(camera_calibration_lib rclcpp std_msgs sensor_msgs image_transport cv_bridge OpenCV Eigen3 rm_interfaces ) # Create executable directly instead of using component registration add_executable(camera_calibration_node src/calibration_node.cpp) ament_target_dependencies(camera_calibration_node rclcpp std_msgs sensor_msgs image_transport cv_bridge OpenCV Eigen3 rm_interfaces ) target_link_libraries(camera_calibration_node camera_calibration_lib) install(TARGETS camera_calibration_lib ARCHIVE DESTINATION lib LIBRARY DESTINATION lib ) install(TARGETS camera_calibration_node RUNTIME DESTINATION lib/${PROJECT_NAME} ) install(DIRECTORY include/ DESTINATION include ) install(DIRECTORY launch/ DESTINATION share/${PROJECT_NAME}/launch ) install(DIRECTORY config/ DESTINATION share/${PROJECT_NAME}/config ) if(BUILD_TESTING) find_package(ament_lint_auto REQUIRED) ament_lint_auto_find_test_dependencies() endif() ament_export_dependencies( rclcpp std_msgs sensor_msgs image_transport cv_bridge OpenCV Eigen3 ) ament_package()