解决 Makefile 的 missing separator 报错
更新于 2026-10-02 20:02
执行 make 时看到:
Makefile:13: *** missing separator. Stop.表示 make 无法按预期解析指定位置的内容。常见原因是命令行前使用了空格,而不是默认要求的 Tab;也要检查规则是否遗漏冒号等分隔符。
区分规则和命令
build:
@echo "building"build: 是目标规则,不靠缩进表示层级;下一行是 recipe 命令,行首使用真实的 Tab。四个空格看起来可能一样,但不是同一个字符。
这条规则适用于 GNU make 默认的 recipe 前缀。显式使用 .RECIPEPREFIX 的文件应按自己的配置判断。
检查空白字符
启用编辑器的空白字符显示,或在 macOS/Linux 终端查看:
cat -vet Makefile^I 表示 Tab。报错行之外,也检查前一行的规则语法和换行。
配置 EditorConfig
[Makefile]
indent_style = tab
indent_size = 4indent_style = tab 指定缩进字符;indent_size = 4 是缩进宽度,不表示“用四个空格代替 Tab”。编辑器需要具备 EditorConfig 支持。
配置不会自动修复所有已有缩进。修改出错的命令行后,重新执行原来的 make 命令,按实际输出判断问题是否解决。
评论 0
还没有公开评论。
评论已关闭,历史评论仍可阅读。