所以我试着编写一个Makefile
来删除嵌套在具有相同名称的目录中的文件。例如,我有一个包含两个文件的目录,其路径为./1234/1234.txt
和./567/567.txt
。我想将这些文件移到顶级目录,以便它们只是./1234.txt
和./567.txt
。我试过这样的东西,但它不起作用:
variable = ./1234/1234.txt ./567/567.txt
run: $(variable)
$(variable): $$(notdir %): %
mv $< $@
这似乎是一个常见问题,但我找不到答案。
非常感谢你的帮助! :)
答案 0 :(得分:1)
您的目标方向错误,除非您使用辅助扩展,否则尝试使用规则中的函数将无效。您还需要有条件地添加依赖项,否则如果您已经移动了文件,那么您的规则将会出错。
variable = ./1234.txt ./567.txt
run: $(variable)
.SECONDEXPANSION:
$(variable): ./%.txt: $$(wildcard ./$$*/$$*.txt)
mv $< $@