Windows下执行Make报错No rule to make target 'echo'如何解决?
Make执行报错"No rule to make target 'echo'"的原因与解决方案
报错原因
这个报错的核心诱因是Makefile的语法规则不满足:GNU Make规定,每个目标对应的执行命令行,行首必须使用单个Tab字符缩进,不能用空格代替。
你编写的Makefile里echo "hello world"行首用了空格,Make不会将其识别为要执行的Shell命令,反而会把echo判定为目标hello的依赖项,尝试寻找生成echo的规则,找不到就抛出你遇到的报错。而你在PowerShell中直接执行echo命令能正常运行,是因为直接执行不需要遵守Makefile的语法规范,二者逻辑无关。
解决方案
- 首先修改Makefile的缩进:把
echo "hello world"行首的所有空格删除,替换为1个Tab缩进,修改后的正确基础版本如下:
hello: echo "hello world"
- 其次确认Makefile文件名正确:默认情况下Make识别的文件名为
Makefile(首字母大写无后缀)或者makefile(全小写),不要命名为Makefile.txt等带后缀的格式。 - 可选优化:可以增加
.PHONY伪目标声明,避免当前目录下存在名为hello的文件时,Make误判目标已最新不执行命令的问题,优化后的版本如下:
.PHONY: hello hello: echo "hello world"
修改完成后再执行make或者make hello就能正常输出结果。
内容的提问来源于stack exchange,提问作者ThibaultQ
相关产品推荐
相关产品推荐

