不知道如果有一個更簡單的方法,但這種將工作:
# 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)退出代碼,如果失敗,則跳過適當的腳本其餘部分。