如何将已过滤的Makefile变量列表转储到文件中?

时间:2011-05-02 15:17:08

标签: filter makefile

我想将所有以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_开头的项目。

我做错了什么?

1 个答案:

答案 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))