如何将经过筛选的 Makefile 变量列表转储到文件中?

发布于 2024-11-04 09:17:29 字数 396 浏览 1 评论 0原文

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

我做错了什么?

I'd like to dump all Makefile variables that start with MYLIB_ and their values to a file called config.h as preprocessor definitions. This is what I have tried:

config:
    @echo "// AUTO-GENERATED - DO NOT EDIT!" > config.h
    $(foreach V, $(filter MYLIB_%, $(.VARIABLES)),
        $(shell echo "#define $(V) $($V)" >> config.h))

Unfortunately, $(filter) doesn't return any values, even though $(.VARIABLES) contains items that begin with MYLIB_.

What am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

菩提树下叶撕阳。 2024-11-11 09:17:29

您的 $(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))

Your $(filter) looks correct.
Possibly the cause may be the evaluation order between @echo command
and $(foreach).
Does replacing @echo with $(shell echo ...) like the following
solve the problem?

config:
    $(shell echo "// AUTO-GENERATED - DO NOT EDIT!" > config.h) \
    $(foreach V, $(filter MYLIB_%, $(.VARIABLES)), \
        $(shell echo "#define $(V) $($V)" >> config.h))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文