7

GNU Make 3.81では、ツールチェーンのいずれかの部分でエラーが発生した場合にロックファイルを削除する必要があります。これを可能にする特別なターゲットはありますか?ラッパースクリプトを作成する必要がありますか?

以下の例では、file.outのルールが失敗した場合にunlock_idを実行する必要があります。

ありがとう!-ジェフ

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
4

3 に答える 3

7

私は同じターゲットでロック/ロック解除を行いますfile-maker

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

これによりfile-maker、同じシェルでおよびロック解除の手順が実行され、失敗した場合にそのステータスを保存してfile-makermake失敗file-makerします。

于 2011-07-04T02:00:43.200 に答える
4

これは一種の応急修理ですが、機能します。

all:
        @$(MAKE) file.out || $(MAKE) unlock_id
于 2011-07-02T02:47:56.393 に答える
0

.DELETE_ON_ERRORエラー時に削除するファイルを指定できるターゲットが必要です。

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

編集

私の悪い、それは半端な真実です。これにより、ファイルを削除するように指定できますが、どのファイルをどのような状況で削除するかは、最大makeです。

于 2011-07-01T21:11:41.143 に答える