在 jetson orin NX上编译ros 1 功能包时报错:
/home/nv/ws/slcar/src/bag_ants/ants_explorer_unknown/tsp_solver/lkh_mtsp_solver/src2/mtsp_node.cpp:6:10: fatal error: lkh_mtsp_solver/SolveMTSP.h: 没有那个文件或目录 6 | #include <lkh_mtsp_solver/SolveMTSP.h> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated.解决方案:
在对应的包的CMakeLists.txt中,在最后一行target_link_libraries之前增加add_dependencies操作,如下所示
add_dependencies(mtsp_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) target_link_libraries(mtsp_node ${catkin_LIBRARIES} lkh_mtsp_solver -lm)解释如下
add_dependencies(mtsp_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})为mtsp_node添加编译依赖关系,确保在编译mtsp_node之前,以下两类目标已经构建完成:
${${PROJECT_NAME}_EXPORTED_TARGETS}:
表示当前 ROS 包(即lkh_mtsp_solver)中通过add_library()或add_message_files()等生成的自定义目标(例如消息.msg、服务.srv、动作.action对应的头文件,或本包内定义的库)。
例如,如果你的包定义了自定义消息,那么必须等这些消息的头文件生成后,才能编译使用它们的节点。${catkin_EXPORTED_TARGETS}:
表示所有被find_package(catkin REQUIRED COMPONENTS ...)声明的依赖包中需要先生成的目标(比如其他 ROS 包的消息头文件、动态库等)。