include_directories(${EIGEN3_INCLUDE_DIR})
时间: 2023-12-19 20:04:10 浏览: 40
这是一条 CMake 命令,用于将 Eigen 库的头文件路径添加到编译器的搜索路径中。Eigen 是一个 C++ 的线性代数库,具有高效、易用、开源等特点,可以用于各种科学计算和数值计算领域。在编译使用 Eigen 库的程序时,需要指定 Eigen 头文件的路径,而 include_directories 命令就是用来实现这一功能的。
相关问题
cmake_minimum_required(VERSION 2.8.3) project(ego_planner) set(CMAKE_BUILD_TYPE "Release") ADD_COMPILE_OPTIONS(-std=c++11 ) ADD_COMPILE_OPTIONS(-std=c++14 ) set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wall -g") find_package(Eigen3 REQUIRED) find_package(PCL 1.7 REQUIRED) find_package(catkin REQUIRED COMPONENTS roscpp std_msgs geometry_msgs quadrotor_msgs plan_env path_searching bspline_opt traj_utils message_generation cv_bridge ) # catkin_package(CATKIN_DEPENDS message_runtime) catkin_package( INCLUDE_DIRS include LIBRARIES ego_planner CATKIN_DEPENDS plan_env path_searching bspline_opt traj_utils # DEPENDS system_lib ) include_directories( include SYSTEM ${catkin_INCLUDE_DIRS} ${PROJECT_SOURCE_DIR}/include ${EIGEN3_INCLUDE_DIR} ${PCL_INCLUDE_DIRS} ) add_executable(ego_planner_node src/ego_planner_node.cpp src/ego_replan_fsm.cpp src/planner_manager.cpp ) target_link_libraries(ego_planner_node ${catkin_LIBRARIES} ) #add_dependencies(ego_planner_node ${${PROJECT_NAME}_EXPORTED_TARGETS}) add_executable(traj_server src/traj_server.cpp) target_link_libraries(traj_server ${catkin_LIBRARIES}) #add_dependencies(traj_server ${${PROJECT_NAME}_EXPORTED_TARGETS})
这段代码是一个 CMakeLists.txt 文件,用于编译一个名为 ego_planner 的工程。该工程依赖于 Eigen3 和 PCL 库,同时也依赖于一些 ROS 的组件,如 roscpp、std_msgs、geometry_msgs、quadrotor_msgs、plan_env、path_searching、bspline_opt、traj_utils 和 message_generation。该工程包含两个可执行文件,一个是 ego_planner_node,另一个是 traj_server。其中 ego_planner_node.cpp 是主程序,它包含了 ego_replan_fsm.cpp 和 planner_manager.cpp 两个文件。traj_server.cpp 是用于生成轨迹的服务器程序。在编译过程中,使用了 C++11 和 C++14 标准,同时开启了 Release 模式。
/home/ros/catkin_ctr/src/precise_land/src/traj_pub.cpp:3:10: fatal error: quadrotor_msgs/PositionCommand.h: 没有那个文件或目录 3 | #include "quadrotor_msgs/PositionCommand.h" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated. make[2]: *** [precise_land/CMakeFiles/traj_pub_node.dir/build.make:63:precise_land/CMakeFiles/traj_pub_node.dir/src/traj_pub.cpp.o] 错误 1 make[1]: *** [CMakeFiles/Makefile2:2170:precise_land/CMakeFiles/traj_pub_node.dir/all] 错误 2 make[1]: *** 正在等待未完成的任务....
这个错误提示是说在你的代码中包含了一个名为quadrotor_msgs/PositionCommand.h的头文件,但编译器找不到这个文件。这通常是由于你的编译器无法找到这个头文件所在的目录,或者这个头文件本身不存在。
你可以尝试使用以下命令来查找这个头文件所在的目录:
```
rospack find quadrotor_msgs
```
这个命令会返回 quadrotor_msgs 包的路径。然后你可以在你的 C++ 代码中使用这个路径来包含这个头文件,例如:
```
#include <quadrotor_msgs/PositionCommand.h>
```
或者你可以在 CMakeLists.txt 文件中添加以下行,以确保编译器能够正确找到这个头文件:
```
include_directories(${catkin_INCLUDE_DIRS} ${Eigen_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS} ${PCL_INCLUDE_DIRS} ${PROJECT_SOURCE_DIR}/include)
```
确保你的头文件路径正确,这样编译器就能够正确地找到这个头文件并编译你的代码了。