Makefile规则移动嵌套文件

时间:2018-03-13 21:45:32

标签: makefile gnu-make

所以我试着编写一个Makefile来删除嵌套在具有相同名称的目录中的文件。例如,我有一个包含两个文件的目录,其路径为./1234/1234.txt./567/567.txt。我想将这些文件移到顶级目录,以便它们只是./1234.txt./567.txt。我试过这样的东西,但它不起作用:

variable = ./1234/1234.txt ./567/567.txt

run: $(variable)

$(variable): $$(notdir %): %
    mv $< $@

这似乎是一个常见问题,但我找不到答案。

非常感谢你的帮助! :)

1 个答案:

答案 0 :(得分:1)

您的目标方向错误,除非您使用辅助扩展,否则尝试使用规则中的函数将无效。您还需要有条件地添加依赖项,否则如果您已经移动了文件,那么您的规则将会出错。

variable = ./1234.txt ./567.txt

run: $(variable)

.SECONDEXPANSION:
$(variable): ./%.txt: $$(wildcard ./$$*/$$*.txt)
    mv $< $@