我希望编写一个脚本来进入每个子目录(不是递归)并运行make文件来创建二进制文件。一种方法是更改目录并为每个文件夹运行make,但它不是很优雅,如果添加了其他文件夹和文件,则可能容易出错。
我通过以下方式深入研究了儿童用品:
find -maxdepth 2 -type f -print -exec make {} . \;
我得到每个目录的错误,其中说明了以下内容:
make: Nothing to be done for reduc211/makefile.
任何人都对我能改变什么有任何想法?任何帮助将不胜感激!
非常感谢和愉快的编码。
答案 0 :(得分:1)
make reduc211/makefile
不运行命名的makefile;它使用make
的查找规则查找Makefile并尝试生成目标reduc211/makefile
。你想要的是像
find -maxdepth 2 -name 'Makefile' -print -execdir make \;
这会在找到名为make
的文件的每个目录中运行Makefile
命令。
如果你有不同名称的makefile,例如每个都是Makefile.something
的形式,你可以试试
find -maxdepth 2 -name 'Makefile.*' -print -execdir make -f \{}\ \;
使用make
找到的特定Makefile运行find
。
答案 1 :(得分:0)
这样的东西?
for dir in *; do
if [ -d "$dir" ]; then
(cd "$dir" && make)
fi
end