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

Makefile目标内嵌入ifeq条件语句执行报错的原因咨询

问题原因分析与修正方案

这个报错的核心问题很明确:你混淆了Makefile的两种语法行规则。

在Makefile里,行分为两类:

  • Make自身语法行:比如条件判断(ifeq/endif)、变量定义、规则声明这些,属于Make的解析逻辑,这类行绝对不能以Tab开头;
  • Shell命令行:也就是规则目标下要实际执行的命令(比如你的echo hello),这类行必须以Tab开头,Make才会把它们交给系统shell去执行。

你写的代码里,ifeq (0,0)和endif本来是Make的条件判断语句,结果给它们加了Tab前缀,Make就误以为这是要执行的shell命令,直接传给/bin/sh去处理了——但shell完全不认识ifeq这种Make专属语法,自然就抛出了“unexpected token”的语法错误。

修正后的正确代码

all:
ifeq (0,0)
	echo hello
endif

只需要把ifeq和endif前面的Tab去掉,保留echo hello前的Tab(因为这是真正要执行的shell命令),再执行make就会正常输出hello了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 12:32:43