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