solution_zoo common dir:
In file included from /usr/robot/ros2_ws/src/ros2_project/aiic_cv_framework/ros_interface/src/ros_publisher_handler.cpp:3:
/usr/robot/ros2_ws/src/ros2_project/aiic_cv_framework/ros_interface/include/ros_common.h:28:10: fatal error: rclcpp/rclcpp.hpp: No such file or directory
28 | #include <rclcpp/rclcpp.hpp>
| ^~~~~~~~~~~~~~~~~~~
compilation terminated.
In file included from /usr/robot/ros2_ws/src/ros2_project/aiic_cv_framework/ros_interface/include/ros_subscriber_handler.h:6,
from /usr/robot/ros2_ws/src/ros2_project/aiic_cv_framework/ros_interface/src/ros_subscriber_handler.cpp:3:
/usr/robot/ros2_ws/src/ros2_project/aiic_cv_framework/ros_interface/include/ros_common.h:28:10: fatal error: rclcpp/rclcpp.hpp: No such file or directory
28 | #include <rclcpp/rclcpp.hpp>
| ^~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [aiic_cv_framework/solutionzoo/CMakeFiles/run_solution.dir/build.make:76: aiic_cv_framework/solutionzoo/CMakeFiles/run_solution.dir/__/ros_interface/src/ros_publisher_handler.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [aiic_cv_framework/solutionzoo/CMakeFiles/run_solution.dir/build.make:89: aiic_cv_framework/solutionzoo/CMakeFiles/run_solution.dir/__/ros_interface/src/ros_subscriber_handler.cpp.o] Error 1
In file included from /usr/robot/ros2_ws/src/ros2_project/aiic_cv_framework/solutionzoo/src/main.cpp:9:
/usr/robot/ros2_ws/src/ros2_project/aiic_cv_framework/ros_interface/include/ros_common.h:28:10: fatal error: rclcpp/rclcpp.hpp: No such file or directory
28 | #include <rclcpp/rclcpp.hpp>
| ^~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [aiic_cv_framework/solutionzoo/CMakeFiles/run_solution.dir/build.make:63: aiic_cv_framework/solutionzoo/CMakeFiles/run_solution.dir/src/main.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1394: aiic_cv_framework/solutionzoo/CMakeFiles/run_solution.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
---
Failed <<< ros2_project [4.13s, exited with code 2]
1.添加find_package
find_package(rclcpp REQUIRED)
2.设置依赖
set(dependencies
rclcpp
)
3.添加target
ament_target_dependencies(${solution_name} ${dependencies})
最后再进行编译。
完整版cMakeList.txt
cmake_minimum_required(VERSION 3.12)
PROJECT(solutionzoo)
# Default to C99
if(NOT CMAKE_C_STANDARD)
set(CMAKE_C_STANDARD 99)
endif()
# Default to C++14
if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 14)
endif()
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra -Wpedantic)
endif()
# get deps directory begin
set(SOLUTION_ZOO_DIR)
function(get_parent_dir arg dir n)
foreach(i RANGE ${ARGV2})
get_filename_component(dir ${dir} DIRECTORY)
# message("i:${i} dir:${dir}")
endforeach(i)
set(SOLUTION_ZOO_DIR ${dir} PARENT_SCOPE)
endfunction()
get_parent_dir(XSTREAM_CURRENT_DIR ${PROJECT_SOURCE_DIR} 0)
message("solution_zoo common dir:${SOLUTION_ZOO_COMMON_DIR}")
if (${CMAKE_BUILD_TYPE} STREQUAL "Release")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -g -fPIC -O3")
else ()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -DEBUG -g -O0 -fPIC")
endif()
## append SOLUTION_ZOO_SRC
# webservice
include(${CMAKE_CURRENT_LIST_DIR}/src/webservice/webservice.cmake)
# messages
include(${CMAKE_CURRENT_LIST_DIR}/src/public_message/public_message.cmake)
#ros_interface
include(${CMAKE_CURRENT_LIST_DIR}/../ros_interface/ros_interface.cmake)
set(SOLUTION_ZOO_SOURCE
# methods
${WEBSERVICE_SOURCE}
${FOLLOWME_METHOD_SOURCE}
${BODY_REID_METHOD_SOURCE}
# plugins
${FOLLOWME_PLUGINS_SOURCE}
${BBOXLOGGERXPROTOPLUGIN_SOURCE}
# messages
${PUBLIC_MESSAGE_SOURCE}
)
find_package(ament_cmake_auto REQUIRED)
find_package(rclcpp REQUIRED)
find_package(rclcpp_components REQUIRED)
find_package(sensor_msgs REQUIRED)
find_package(geometry_msgs REQUIRED)
find_package(nav_msgs REQUIRED)
find_package(std_msgs REQUIRED)
set(dependencies
rclcpp
rclcpp_components
sensor_msgs
geometry_msgs
nav_msgs
std_msgs
)
#message(STATUS "SOLUTION_ZOO_SOURCE: ${SOLUTION_ZOO_SOURCE}")
#target_sources(${PROJECT_NAME} PRIVATE
# ${FOLLOWME_METHOD_SOURCE}
#)
include_directories(${CMAKE_CURRENT_LIST_DIR}/src)
set(LIBSOLUTIONZOO_NAME ${PROJECT_NAME})
add_library(${LIBSOLUTIONZOO_NAME} SHARED ${SOLUTION_ZOO_SOURCE})
target_link_libraries(${PROJECT_NAME} PUBLIC pthread rt dl
${LIBAI_EXPRESS_TARGET}
${LIBINFERENCE_MIDDLEWARE_TARGET}
${OpenCV_LIBS}
${LIBCV_MODULE_LIBS}
)
# TODO
set(SOURCE_FILES
${CMAKE_CURRENT_LIST_DIR}/src/main.cpp
# ros_interface
${ROS_INTERFACE_SOURCE}
)
set(SOLUTION_EXE_NAME run_solution)
add_executable(${SOLUTION_EXE_NAME} ${SOURCE_FILES})
ament_target_dependencies(${SOLUTION_EXE_NAME} ${dependencies})
target_link_libraries(${SOLUTION_EXE_NAME}
${LIBSOLUTIONZOO_NAME}
${LIBINFERENCE_MIDDLEWARE_TARGET}
${LIBAI_EXPRESS_TARGET}
${OpenCV_LIBS}
${LIBMONGOOSE_NAME}
${LIBCV_MODULE_LIBS}
)
ament_auto_find_build_dependencies ()
ament_auto_package ()