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 に答える