当我重建我的应用程序时,之前构建的可执行文件不会被删除,如果出现编译错误,我的脚本会继续执行并执行实际上没有更新的可执行文件。如何在构建过程发生之前删除可执行文件?我想在编译操作中这样做:
exe myapp :
#here I want to remove the executable file
sources
libraries
;
当我重建我的应用程序时,之前构建的可执行文件不会被删除,如果出现编译错误,我的脚本会继续执行并执行实际上没有更新的可执行文件。如何在构建过程发生之前删除可执行文件?我想在编译操作中这样做:
exe myapp :
#here I want to remove the executable file
sources
libraries
;
不确定是否有更简单的方法,但这会起作用:
# 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) 的退出代码,如果失败,则酌情跳过脚本的其余部分。