You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Makefile使用undefine指令报missing separator错误如何解决?

错误原因

这个报错的核心原因是 GNU Make 3.81 版本并未将 undefine 识别为合法的顶级独立指令,你对3.81版本手册的核对存在偏差。

  • GNU Make 对undefine顶级指令的正式支持是从 3.82 版本才新增的特性。3.81 版本中虽然存在undefine相关的逻辑,但仅能配合override关键字搭配使用,不支持直接作为顶级语句单独书写。
  • 当你在 3.81 版本中直接写undefine foo时,make 无法识别这是变量操作指令,会将其解析为「要生成名为undefine的目标、foo为该目标的依赖」的规则声明。按照 Makefile 语法规则,规则对应的命令行必须以 Tab 缩进开头,你下一行的undefine bar没有 Tab 缩进,因此触发missing separator报错。

解决方法

如果需要在当前 3.81 版本中实现取消变量定义的效果,有两种可选方案:

  1. 升级 GNU Make 到 3.82 及以上版本,你原本的代码可直接正常运行
  2. 保持 3.81 版本的话,给所有undefine语句加上override前缀,修改后代码如下:
foo := foo
bar  = bar

override undefine foo
override undefine bar

内容的提问来源于stack exchange,提问作者user13605801

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:15:07