我有一些挂载点被创建为目标并为创建另一个目标而挂载。当创建其他目标时,必须卸载它们,这相对简单,使用其他一些 .PHONY 目标来执行此操作。但是,如果发生错误,它们仍然需要卸载。是否可以根据发生错误时必须重新制作的某些目标来执行此操作?我知道通常会在遇到错误时停止处理配方。我想出的唯一可行的选择是执行子制作:
virtual_target:
sudo mount somelocation somepath ; \
$(MAKE) real_target ; \ ret=$$? \
sudo umount -fl somepath ; \
exit $$ret
real_target:
echo "Do something magical"