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

使用GNU Make时.if条件语句报'missing separator'错误的求助

Makefile报错"missing separator"的原因与解决方法

问题原因

你使用的.if/.endif是BSD Make(FreeBSD等BSD系统默认的构建工具)的专属条件语法,而当前运行的是GNU Make 4.2.1。两者的语法规则不兼容,GNU Make无法识别BSD Make的条件判断格式,因此触发"missing separator"错误。

解决方法

方案1:使用BSD Make执行

如果你的系统是FreeBSD/OpenBSD等BSD系列,直接调用BSD Make运行即可:

bmake
# FreeBSD系统中默认的make就是BSD Make,也可以直接用:
make

方案2:修改代码适配GNU Make

将BSD Make的条件语法替换为GNU Make支持的ifeq/ifneq语法,修改后的代码如下:

# 写法1:判断不等于0时添加
ifneq ($(WITH_DOT),0)
VIS+=       day21.dot day21.pdf
endif

# 或者等价的写法2:
ifeq ($(WITH_DOT),0)
# 当WITH_DOT为0时不执行任何操作
else
VIS+=       day21.dot day21.pdf
endif

修改完成后,即可用GNU Make正常执行该Makefile。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 23:24:58