我想在多个目录中执行一个任务,但到目前为止还没有找到“类似makefile”的解决方案。我知道这是一个经常被问到的问题,我知道如何解决子makfiles等,但我正在寻找更简单的东西。遍历Makefile中的目录列表
而不是做
copy:
cd module1 && mkdir foo
cd module2 && mkdir foo
cd module3 && mkdir foo
的,我想有这样的事情
directories = module1 module2 module3
copy: $(directories)
cd $< && mkdir foo
,但不起作用,因为receipe被称为仅第一次目录。我想出了这种解决方案,但可能不符合Makefiles的风格:
directories = module1 module2 module3
copy:
for d in $(directories); do cd $$d && mkdir foo && cd ..; done
我该如何做得更好?
谢谢,这是有效的。我选择了解决方案2(从makefile生成'copy'目标),因为它没有绑定到'mkdir'的情况。不幸的是,它与使用shell-for-loop没有多大区别,但这并不重要。 – Robert