gnu make-在Makefile中,如何清理锁定文件



在GNU Make 3.81中,如果工具链的任何部分出现错误,我需要删除一个锁定文件。有没有一个特殊的目标可以让我这么做?我需要写一个包装脚本吗?

在下面的示例中,如果file.out的规则失败,我需要unlock_id。

谢谢!-Jeff

all: lock_id file.out unlock_id
file.out: file.in
    file-maker < file.in > $@
lock_id:
    lockfile file.lock
unlock_id:
    rm -rf file.lock

我会在与file-maker:相同的目标中进行锁定/解锁

file.out: file.in
        lockfile $@.lock
        file-maker < $< > $@; 
        status=$$?; 
        rm -f $@.lock; 
        exit $$status

这在同一个shell中执行file-maker和解锁步骤,保存file-maker的状态,因此如果file-maker失败,make将失败。

这是一种拼凑,但它有效:

all:
        @$(MAKE) file.out || $(MAKE) unlock_id

您需要.DELETE_ON_ERROR目标,它允许您指定在出现错误时要删除的文件。

http://www.gnu.org/s/hello/manual/make/Special-Targets.html

编辑

我的坏,这是半个事实。它允许您指定要删除的文件,但至于删除哪些文件以及在什么情况下删除,则取决于make

相关内容

  • 没有找到相关文章

最新更新