Filter 如何将筛选后的Makefile变量列表转储到文件中?
我想将所有以Filter 如何将筛选后的Makefile变量列表转储到文件中?,filter,makefile,Filter,Makefile,我想将所有以MYLIB\ucode>开头的Makefile变量及其值作为预处理器定义转储到名为config.h的文件中。这就是我尝试过的: config: @echo "// AUTO-GENERATED - DO NOT EDIT!" > config.h $(foreach V, $(filter MYLIB_%, $(.VARIABLES)), $(shell echo "#define $(V) $($V)" >> config.h))
MYLIB\ucode>开头的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
开头的项
我做错了什么?您的$(过滤器)
看起来正确。
原因可能是@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))
您的$(过滤器)
看起来正确。
原因可能是@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))