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)') 工作正常。
我放
@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)') 工作正常。