在我的makefile中,我有一个变量“NDK_PROJECT_PATH”,我的问题是我如何在编译时将它打印出来?
我读了使文件回显“$PATH”字符串,我尝试了:
@echo $(NDK_PROJECT_PATH)
@echo $(value NDK_PROJECT_PATH)
两者都给了我
"build-local.mk:102: *** missing separator. Stop."
有人知道为什么对我没用吗?
在我的makefile中,我有一个变量“NDK_PROJECT_PATH”,我的问题是我如何在编译时将它打印出来?
我读了使文件回显“$PATH”字符串,我尝试了:
@echo $(NDK_PROJECT_PATH)
@echo $(value NDK_PROJECT_PATH)
两者都给了我
"build-local.mk:102: *** missing separator. Stop."
有人知道为什么对我没用吗?
当前回答
下面的命令在Windows上为我做了这件事:
Path | tr ; "\n"
其他回答
这个makefile将生成'缺少分隔符'错误消息:
all
@echo NDK_PROJECT_PATH=$(NDK_PROJECT_PATH)
done:
@echo "All done"
在@echo“All done”之前有一个制表符(尽管done: rule和action在很大程度上是多余的),但在@echo PATH=$(PATH)之前没有。
问题是,以all开头的行应该有冒号:或等号=来表示它是目标行或宏行,但它两者都没有,所以分隔符不见了。
响应变量值的操作必须与目标相关联,可能是虚拟目标或伪目标。目标行上必须有冒号。如果在示例makefile中添加a:并将下一行的前导空格替换为制表符,则可以正常工作。
您可能在原始makefile中的第102行附近遇到类似的问题。如果在出现失败的回显操作之前显示5行非空、非注释行,则很可能完成诊断。然而,由于这个问题是在2013年5月提出的,所以这个损坏的makefile现在(2014年8月)不太可能仍然可用,所以这个答案不能正式验证。它只能用来说明问题发生的一种合理的方式。
如果我想查看变量值,我通常会返回一个错误。(除非你想看看价值。它将停止执行。)
@echo $(NDK_PROJECT_PATH = $(NDK_PROJECT_PATH))
不需要修改Makefile。
$ cat printvars.mak
print-%:
@echo '$*=$($*)'
$ cd /to/Makefile/dir
$ make -f ~/printvars.mak -f Makefile print-VARIABLE
如果你使用android make (mka) @echo $(NDK_PROJECT_PATH)将不起作用,并给你错误***丢失分隔符。停止。” 如果你想在android make中打印变量,请使用这个答案
NDK_PROJECT_PATH := some_value
$(warning $(NDK_PROJECT_PATH))
这对我很有用
@echo $(NDK_PROJECT_PATH)是一个很好的方法。 我不认为错误来自这里。 通常,当您键入错误的意图时,会出现此错误:我认为您在应该有制表符的地方有空格。