我希望编写一个脚本以进入每个子目录(不是递归地)并运行一个 make 文件来创建一个二进制文件。一种方法是更改目录并为每个文件夹运行 make,但这不是很优雅,如果添加了额外的文件夹和文件,则可能容易出错。
我在深入研究子目录方面取得了一些成功:
find -maxdepth 2 -type f -print -exec make {} 。\;
我收到每个目录的错误,其中说明如下:
make:reduc211/makefile 无需执行任何操作。
有人知道我可以更改什么吗?任何帮助将不胜感激!
非常感谢,编码愉快。
最佳答案
make reduc211/makefile
不运行指定的 makefile;它使用 make
的查找规则查找 Makefile,并尝试生成目标 reduc211/makefile
。你想要的是像
find -maxdepth 2 -name 'Makefile' -print -execdir make \;
这会在找到名为 Makefile
的文件的每个目录中运行 make
命令。
如果您有不同名称的 makefile,例如每个都是 Makefile.something
的形式,您可以尝试
find -maxdepth 2 -name 'Makefile.*' -print -execdir make -f \{}\ \;
使用 find
找到的特定 Makefile 运行 make
。
关于linux - 在 Linux 中写一个脚本在每个最大深度为 2 的子目录中运行 make,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22966366/