2012-06-13 3 views
1

Когда я перестраиваю приложение, исполняемый файл, созданный ранее, не удаляется, а в случае ошибки компиляции мой скрипт продолжает выполнение и исполняет исполняемый файл, который на самом деле не был обновлен. Как я могу удалить исполняемый файл до начала процесса сборки? Я хочу сделать это в компиляции действий:Boost.Build rebuild

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

ответ

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) и, если это не удается, пропустить оставшуюся часть скрипта.

Смежные вопросы