Boost.Build重建

时间:2012-06-13 18:51:16

标签: boost boost-build

当我重建我的应用程序时,先前构建的可执行文件不会被删除,并且在编译错误的情况下,我的脚本继续执行并执行可执行文件,实际上该文件未更新。我怎样才能在构建过程发生之前删除可执行文件?我想在编译操作中这样做:

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

1 个答案:

答案 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)的退出代码,如果失败则跳过脚本的其余部分。