在我的makefile中,我有一个变量'NDK_PROJECT_PATH',我的问题是当它编译时如何打印出来?
我读取了显示“$PATH”字符串的Make file echo,并尝试:
@echo $(NDK_PROJECT_PATH)
@echo $(value NDK_PROJECT_PATH)
两者都给了我
"build-local.mk:102: *** missing separator. Stop."
有谁知道为什么它对我不起作用?
您可以使用这种方法(使用名为“var”的变量)在读取makefile时打印出变量(假设GNU make as您已经适当地标记了这个问题):
$(info $$var is [${var}])
您可以将此构造添加到任何配方中,以查看make将传递给shell的内容:
.PHONY: all
all: ; $(info $$var is [${var}])echo Hello world
现在,make将整个配方($(info$$var is[${var}])echo Hello world
)存储为一个递归扩展的变量。当make决定运行配方时(例如,当您告诉它构建all
),它会展开变量,然后将得到的每一行分别传递给shell。
因此,令人痛苦的细节是:
$(info$$var是[${var}])echo Hello World
$(info$$var is[${var}])
$$
变为文字$
${var}
变为:-)
(例如)$var is[:-)]
出现在标准输出$(info...)
的展开为空echo Hello world
,让您知道它将要求shell执行什么操作
根据GNU Make手册和下面答案中的“bobbogo”,您可以使用info/warning/error来显示文本。
$(error text…)
$(warning text…)
$(info text…)
要打印变量,
$(error VAR is $(VAR))
$(warning VAR is $(VAR))
$(info VAR is $(VAR))
“error”将在显示错误字符串后停止make执行
来自“Mr.Make Post”https://www.cmcrossroads.com/article/printing-value-makefile-variable
将以下规则添加到生成文件:
print-% : ; @echo $* = $($*)
然后,如果您想要找出一个makefile变量的值,只需:
make print-VARIABLE
它将返回:
VARIABLE = the_value_of_the_variable