使用Make的文件功能

Luc*_*ano 4 makefile gnu-make

我正在尝试将make变量的值转储到文件中以供进一步处理.

到目前为止,我已经能够使用以下规则将值打印到命令行:

print-%:
    @echo '$*=$($*)'
Run Code Online (Sandbox Code Playgroud)

您使用命令行调用的

make print-VAR
Run Code Online (Sandbox Code Playgroud)

我真的不想在stdout上,但打印到文件.GNU Make"文件"功能看起来像我应该使用的东西:http: //www.gnu.org/software/make/manual/html_node/File-Function.html#File-Function

该页面立即跳转到一个复杂的例子中,所以我已经实现了以下但似乎无法使它工作:它将@echo打印到stdout,但当我查看我的目录时没有output.txt文件.

printf-%:
    @echo '$*=$($*)'
    $(file > output.txt,$($*))
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

编辑:好吧,看起来我可以使用

@echo '$($*)' > output.txt
Run Code Online (Sandbox Code Playgroud)

做我想做的事,但这仍然无法解释为什么我的文件调用不起作用.

Luc*_*ano 9

评论部分的两个回复:

1)要获得所需的功能,只需将"@echo"语句重定向到文件即可

printf-%:
    @echo '$*=$($*)' > output.txt
Run Code Online (Sandbox Code Playgroud)

2)文件功能不起作用的原因是它是Make v4.0和更新的功能,而不是3.8,这是我使用的版本.

  • GA-AA!为什么早期版本不会在$(文件...)上出错?这段无操作的行为让我困惑了一段时间! (8认同)