2012-06-13 1 views
1

Lorsque je reconstruis mon application, l'exécutable construit précédemment n'est pas supprimé, et dans le cas d'une erreur de compilation mon script continue l'exécution et exécute le fichier exécutable, qui en fait n'a pas été mis à jour. Comment puis-je supprimer l'exécutable avant que le processus de génération ait lieu? Je veux le faire dans l'action de compilation:Boost.Build reconstruire

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

Répondre

1

Je ne sais pas s'il y a un moyen plus facile, mais cela fonctionne:

# 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) ; 
} 

Et puis dans votre jamfile vous pouvez faire:

# jamfile 
exe myapp : 
    sources 
    libraries 
    ; 

import cleanexe : clean-exe ; 
clean-exe myapp ; 

Vous pouvez également vérifier le code de sortie de b2 (bjam) et, en cas d'échec, ignorer le reste du script.

Questions connexes