在我的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."
有人知道为什么对我没用吗?
当前回答
来自“Mr. Make post” https://www.cmcrossroads.com/article/printing-value-makefile-variable
在Makefile中添加以下规则:
print-% : ; @echo $* = $($*)
然后,如果你想找出makefile变量的值,只需:
make print-VARIABLE
它会返回:
VARIABLE = the_value_of_the_variable
其他回答
运行make -n;它告诉你变量的值。
Makefile……
all:
@echo $(NDK_PROJECT_PATH)
命令:
export NDK_PROJECT_PATH=/opt/ndk/project
make -n
输出:
echo /opt/ndk/project
make的所有版本都要求命令行缩进,第一个字符是制表符(而不是空格)。如果你向我们展示整个规则,而不是问题中的两行,我们可以给出更清晰的答案,但它应该是这样的:
myTarget: myDependencies
@echo hi
其中第二行第一个字符必须是TAB。
如果我想查看变量值,我通常会返回一个错误。(除非你想看看价值。它将停止执行。)
@echo $(NDK_PROJECT_PATH = $(NDK_PROJECT_PATH))
你可以在你的make文件中创建一个vars规则,像这样:
dispvar = echo $(1)=$($(1)) ; echo
.PHONY: vars
vars:
@$(call dispvar,SOMEVAR1)
@$(call dispvar,SOMEVAR2)
这里有一些更健壮的方法来转储所有变量:gnu make:列出特定运行中所有变量(或“宏”)的值。
来自“Mr. Make post” https://www.cmcrossroads.com/article/printing-value-makefile-variable
在Makefile中添加以下规则:
print-% : ; @echo $* = $($*)
然后,如果你想找出makefile变量的值,只需:
make print-VARIABLE
它会返回:
VARIABLE = the_value_of_the_variable