0

ターゲットとして作成され、別のターゲットを作成する目的でマウントされるマウントポイントがいくつかあります。他のターゲットが作成されたら、それらをアンマウントする必要があります。これは比較的簡単で、他の .PHONY ターゲットを使用してこれを行います。ただし、エラーが発生した場合は、アンマウントする必要があります。エラーが発生したときに再作成する必要があるターゲットに基づいてこれを行うことは可能ですか? 通常、エラーが発生すると、make はレシピの処理を停止します。私が思いついた唯一の実行可能なオプションは、サブメイクを実行することです:

virtual_target:
    sudo mount somelocation somepath ; \
    $(MAKE) real_target ; \ ret=$$? \
    sudo umount -fl somepath ; \
    exit $$ret

real_target:
    echo "Do something magical"
4

1 に答える 1

0

場所をターゲットとしてマウントせず、代わりにそれらをマウントするマクロを作成することで、この問題を回避しました。次に、レシピにトラップを設定して、終了時にマウントを解除します。

target:
    trap "$(umount)" EXIT ; \
    $(mount) && \
    echo "Do something magical"
    touch $@
于 2013-08-30T15:05:40.660 に答える