解决No rule to make target 'beginner_tutorials/CMakeFiles/talker.dir/build'。的一种可能性方法

问题现象:在构建项目时在命令行中出现

make[2]: *** No rule to make target 'beginner_tutorials/CMakeFiles/talker.dir/build'。 停止。
CMakeFiles/Makefile2:480: recipe for target 'beginner_tutorials/CMakeFiles/talker.dir/all' failed
make[1]: *** [beginner_tutorials/CMakeFiles/talker.dir/all] Error 2
make[1]: *** 正在等待未完成的任务....
make[2]: *** No rule to make target 'beginner_tutorials/CMakeFiles/listener.dir/build'。 停止。
CMakeFiles/Makefile2:443: recipe for target 'beginner_tutorials/CMakeFiles/listener.dir/all' failed
make[1]: *** [beginner_tutorials/CMakeFiles/listener.dir/all] Error 2
[100%] Built target beginner_tutorials_generate_messages
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j4 -l4" failed

如下图所示:

解决No rule to make target 'beginner_tutorials/CMakeFiles/talker.dir/build'。的一种可能性方法_第1张图片


在wiki.ros.org上按步骤来的时候出错http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28c%2B%2B%29

为什么呢?因为在

修改CMakeList.txt时有一步骤不一定适合任何版本的ros

继续使用我们上一节使用的自己创建的beginner_tutorial包。

此包的CMakeLists.txt文件应该如下所示(移除不必要的注释之后):

cmake_minimum_required(VERSION 2.8.3)
project(beginner_tutorials)

## Find catkin and any catkin packages
find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs genmsg)

## Declare ROS messages and services
add_message_files(DIRECTORY msg FILES Num.msg)
add_service_files(DIRECTORY srv FILES AddTwoInts.srv)

## Generate added messages and services
generate_messages(DEPENDENCIES std_msgs)

## Declare a catkin package
catkin_package()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

catkin_package()此行出错,理论上应该版本低的ros修改成这样可以编译

实际上在前面我们创建ROS中的msg和srv文件中(http://wiki.ros.org/ROS/Tutorials/CreatingMsgAndSrv)


catkin_package(
  ...
  CATKIN_DEPENDS message_runtime ...
  ...)
这一步修改后的文件

为catkin_package(CATKIN_DEPENDS roscpp rospy std_msgs message_runtime)

在早期版本中可以直接使用catkin_package()

将上面15行改成catkin_package(CATKIN_DEPENDS roscpp rospy std_msgs message_runtime)

关闭窗口退出即可。

然后在terminal中切换到相应的工作目录

例如我的目录为~/dev/catkin_ws/

则在窗口中输入

cd ~/dev/catkin_ws/

然后继续输入catkin_make

如果不出意外,应该会出现如下窗口

解决No rule to make target 'beginner_tutorials/CMakeFiles/talker.dir/build'。的一种可能性方法_第2张图片

ok 成功!

你可能感兴趣的:(Ros,catkin)