我想将所有以MYLIB_
开头的Makefile变量及其值转储到名为config.h
的文件作为预处理器定义。这就是我的尝试:
config:
@echo "// AUTO-GENERATED - DO NOT EDIT!" > config.h
$(foreach V, $(filter MYLIB_%, $(.VARIABLES)),
$(shell echo "#define $(V) $($V)" >> config.h))
不幸的是,$(filter)
不会返回任何值,即使$(.VARIABLES)
包含以MYLIB_
开头的项目。
我做错了什么?
答案 0 :(得分:1)
您的$(filter)
看起来是正确的。
可能原因可能是@echo
命令之间的评估顺序
和$(foreach)
。
是否将@echo
替换为$(shell echo ...)
,如下所示
解决问题?
config:
$(shell echo "// AUTO-GENERATED - DO NOT EDIT!" > config.h) \
$(foreach V, $(filter MYLIB_%, $(.VARIABLES)), \
$(shell echo "#define $(V) $($V)" >> config.h))