前两天师弟在学习小鱼的ros2时,用到了g++和makefile两种编译方式,照着文档进行g++操作时没有问题,但在使用make命令时出现了一些小问题。
如图所示,师弟将ros2中第一个节点的cpp编译用的makefile粘贴到自己的makefile文件中:
然后使用make build命令出现了以下报错:
make: *** 没有规则可制作目标“build”。 停止。
1、首先检查makefile文件,内容没有问题,也是从鱼香ros上直接粘贴过来的。
2、内容没问题就查一下makefile文件路径,是在功能包的根目录下的,也没有问题。
3、最后就是格式上的检查了。makefile文件的编写对格式的要求非常严格,命令中间用tab补齐,不能用空格代替。师弟复制过来的是空格,所以就出现了没有规则的提示。
知道原因后,师弟用vscode进行了makefile的修改,注意,vscode中间的tab也是用空格填充的,所以最好用vim等编辑器进行修改。可以通过移动光标进行检查,如果光标移动一次就到达了所需的空间位置,则用的是tab。如果移动多次才到达,则使用的空格。
最后进行make build -f makefile(这里是你的makefile文件名)大M不自动识别,所以加-f接文件名指定文件。