Boost.Build восстановить

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

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

Другие вопросы по тегам