Makefile 中的@echo 总是导致错误“*** 缺少分隔符。停止。”

@echo in Makefile always causes error " *** missing separator. Stop."

我放

@echo "============= $(TOOLPREFIX) ================="

很多OS课程使用的xv6的Makefile第34行,希望打印出变量TOOLPREFIX的值。但我总是出错

Makefile:37: *** missing separator.  Stop.

此行在任何目标之前。我想尽一切办法,比如在命令的开头添加 Tab,将命令移动到 Makefile 中的任何地方,或者删除 echo 之前的符号 @,但无论如何我总是出错。但是如果我把这个命令注释掉,就没有错误了。那么,我应该如何在这个 Makefile 中正确地打印出一个变量呢?

附带说明一下,如果我在命令开头添加 Tab,我得到的错误是“Makefile:37: *** 配方在第一个目标之前开始。停止。”但是,如果我将 @echo 命令移动到 Makefile 的底部,“Makefile:287: *** missing separator. Stop.”又出来了

环境是 Window Linux 的子系统,安装了 ubuntu 20.04。

您的指令不能超出任何规则。

您必须创建一个:

mydebug:
        @echo "============= $(TOOLPREFIX) ================="

不应该在那里使用 echo 命令。应该使用它来打印消息:

$(info ============= $(TOOLPREFIX) =================)

在我的例子中 $(info bla bla '$(FOO)') 给出了一个错误(缺少运算符)但是 $(warning bla bla '$(FOO)') 工作正常。