1

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

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

1 回答 1

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

于 2012-10-02T16:52:56.783 回答