2012-06-13 43 views
1

當我重建我的應用程序時,以前構建的可執行文件不會被刪除,並且在編譯錯誤的情況下,我的腳本會繼續執行並執行可執行文件,而實際上它並未更新。我如何才能即構建過程發生之前刪除可執行文件?我想這樣做在編譯動作:Boost.Build rebuild

exe myapp : 
    #here I want to remove the executable file 
    sources 
    libraries 
    ; 

回答

1

不知道如果有一個更簡單的方法,但這種將工作:

# cleanexe.jam 
import project ; 
import targets ; 
import generators ; 
import type ; 

type.register CLEAN_EXE : clean-exe ; 

rule clean-exe (source : requirements * : target-name ?) 
{ 
    target-name ?= $(source:D=:S=).cleanexe ; 
    return [ targets.create-typed-target CLEAN_EXE : [ project.current ] : $(target-name) : $(source) : $(requirements) ] ; 
} 

generators.register-standard cleanexe.clean-on-failure : EXE : CLEAN_EXE ; 

rule clean-on-failure (target : source : requirements *) 
{ 
    RMOLD $(source) ; 
} 

然後在你的Jamfile中,你可以這樣做:

# jamfile 
exe myapp : 
    sources 
    libraries 
    ; 

import cleanexe : clean-exe ; 
clean-exe myapp ; 

或者,您可能會考慮檢查b2(bjam's)退出代碼,如果失敗,則跳過適當的腳本其餘部分。