2013-08-30 14 views
0

我有一些安裝點是作爲目標創建的,並且爲創建另一個目標而安裝。當製作其他目標時,必須使用其他.PHONY目標來卸載它們,這是相對簡單的。但是,如果發生錯誤,他們仍然需要卸載。是否有可能根據發生錯誤時必須重新制作的某個目標來做到這一點?我知道通常會在遇到錯誤時停止處理食譜。唯一可行的選擇,我想出了是執行submake:Make:是否有可能在發生錯誤時執行目標(例如,.DELETE_ON_ERROR會在出錯時移除目標)

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

real_target: 
    echo "Do something magical" 

回答

0

我已經沒有安裝位置爲目標,而不是創建一個宏將它們安裝在其周圍的工作。然後我在配方中設置一個陷阱,在出口處卸下它們:

target: 
    trap "$(umount)" EXIT ; \ 
    $(mount) && \ 
    echo "Do something magical" 
    touch [email protected] 
相關問題