Boost 推进,重建

Boost 推进,重建,boost,boost-build,Boost,Boost Build,当我重建我的应用程序时,先前构建的可执行文件不会被删除,如果出现编译错误,我的脚本将继续执行并执行可执行文件,而该文件实际上没有更新。如何在构建过程发生之前删除可执行文件?我希望在编译操作中执行此操作: exe myapp : #here I want to remove the executable file sources libraries ; 不确定是否有更简单的方法,但这会起作用: # cleanexe.jam import project ; im

当我重建我的应用程序时,先前构建的可执行文件不会被删除,如果出现编译错误,我的脚本将继续执行并执行可执行文件,而该文件实际上没有更新。如何在构建过程发生之前删除可执行文件?我希望在编译操作中执行此操作:

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

< P>不确定是否有更简单的方法,但这将起作用:

# 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 ;
P>可选的,您可以考虑检查B2的(BJAM)退出代码,如果失败,则跳过脚本的其余部分。