在 Windows 上使用 MSYS 在 makefile 中使用 rm

Using rm in a makefile on Windows with MSYS

我的 makefile 中有以下代码,用于在成功编译 tex 文件后删除我不想保留的文件。

grep '^OUTPUT ' $*.fls \
    | sed -e 's/^OUTPUT //' \
    | grep -vx $@ \
    | xargs rm
rm $*.fls
rm -f $*.bbl $*.blg

pdf生成成功后出现如下错误

rm: cannot remove `00_Master_Thesis.log': Permission denied
rm: cannot remove `00_Master_Thesis.nlo': Permission denied
rm: cannot remove `00_Master_Thesis.aux': Permission denied
rm: cannot remove `00_Master_Thesis.out': Permission denied
make.exe": *** [00_Master_Thesis.pdf] Error 123

我尝试添加几个命令来获得删除这些文件的权限,并检查了包含这些文件的文件夹的权限。我也尝试以管理员身份启动 cmd,但似乎没有任何帮助。

同一个 makefile 在我的 Ubuntu 系统上运行良好。 我怎样才能让 make 也删除 Windows 上的那些文件?

编辑:

问题似乎是,pdflatex.exe 在写入 pdf 后没有退出。我什至无法手动删除这些文件,因为根据 windows 资源管理器,它们仍在 pdflatex.exe.

中打开

在我杀死 pdflatex.exe 之后,错误信息改变了,现在只显示:

rm: cannot remove `00_Master_Thesis.log': Permission denied
make.exe": *** [00_Master_Thesis.pdf] Error 123

现在除了日志文件之外,只有 *.log、*.bbl、*.blg、*.fls、*.ilg 和 *.nls 文件不会被删除。 *.aux、*.out 和 *.nlo 文件在 make 完成后就永远消失了,这至少是朝着正确方向迈出的一步。 ^^

我怎样才能 pdflatex.exe 退出或释放文件以便 rm 可以删除它们?

根据 的建议,尝试添加两个选项:

-halt-on-error-interaction batchmode,

那么应该可以了。