首页 > 解决方案 > 如何在 Makefile 命令中修改文件名

问题描述

我正在尝试根据makefile中的命令重命名输入->输出文件。例如“调整大小”、“加速”等。

我可以在文件顶部添加重命名块,例如更改后缀:

output := $(input:.mov=.mp4)

但据我所知,这在 make 命令中不起作用

check:
    output := $(input:.mov=.mp4)

$ input=walkthrough.mov make check
output := walkthrough.mp4
make: output: No such file or directory
make: *** [check] Error 1

那么我将如何在每个 make-function 的基础上重命名文件,而不仅仅是每个 Makefile 一次?


@beta 提到了目标特定变量,但我似乎也无法使该语法正常工作。

check: output="foo"
    @echo "input ${input}"
    @echo "output ${output}"

错误:

$ input="blah" make check
Makefile:10: *** commands commence before first target.  Stop.

标签: makefilerename

解决方案


你不能将Make语法传递给shell, shell 不会知道你在说什么。

但是您可以使用特定于目标的变量

check: output := $(input:.mov=.mp4)
check:
    @echo $(output)

推荐阅读