当我重建我的应用程序时,先前构建的可执行文件不会被删除,并且在编译错误的情况下,我的脚本继续执行并执行可执行文件,实际上该文件未更新。我怎样才能在构建过程发生之前删除可执行文件?我想在编译操作中这样做:
exe myapp :
#here I want to remove the executable file
sources
libraries
;
答案 0 :(得分: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)的退出代码,如果失败则跳过脚本的其余部分。