跳转到正文
返回文章列表

解决 Makefile 的 missing separator 报错

更新于 2026-10-02 20:02

执行 make 时看到:

纯文本
Makefile:13: *** missing separator. Stop.

表示 make 无法按预期解析指定位置的内容。常见原因是命令行前使用了空格,而不是默认要求的 Tab;也要检查规则是否遗漏冒号等分隔符。

区分规则和命令

makefile
build:
	@echo "building"

build: 是目标规则,不靠缩进表示层级;下一行是 recipe 命令,行首使用真实的 Tab。四个空格看起来可能一样,但不是同一个字符。

这条规则适用于 GNU make 默认的 recipe 前缀。显式使用 .RECIPEPREFIX 的文件应按自己的配置判断。

检查空白字符

启用编辑器的空白字符显示,或在 macOS/Linux 终端查看:

Bash
cat -vet Makefile

^I 表示 Tab。报错行之外,也检查前一行的规则语法和换行。

配置 EditorConfig

ini
[Makefile]
indent_style = tab
indent_size = 4

indent_style = tab 指定缩进字符;indent_size = 4 是缩进宽度,不表示“用四个空格代替 Tab”。编辑器需要具备 EditorConfig 支持。

配置不会自动修复所有已有缩进。修改出错的命令行后,重新执行原来的 make 命令,按实际输出判断问题是否解决。

参考:GNU make 手册及EditorConfig 官方说明。

评论 0

还没有公开评论。

评论已关闭,历史评论仍可阅读。

留下评论

评论审核通过后公开。支持纯文本,最多 2000 个字符。