Рассмотрим этот make-файл:
all: fail success
all success:
@echo $@
fail:
exit 1
@echo $@
Теперь запустите с двумя флагами:
$ make -i
exit 1
make: [Makefile:7: fail] Error 1 (ignored)
fail
success
all
Этот флаг заставил make делать вид, что конкретная команда рецепта выполнена успешно, даже если она не удалась.Таким образом, цель all
все еще выполняется, поскольку make считает, что цель fail
действительно выполнена успешно.Это эквивалентно добавлению -
в начале каждой строки рецепта.
В отличие от:
$ make -k
exit 1
make: *** [Makek:7: fail] Error 1
success
make: Target 'all' not remade because of errors.
Здесь make знает, что цель fail
не была построена.success
запускается из-за -k
: это не зависит от fail
.Тем не менее, all
не построен, потому что он зависит от fail
.
Мне на самом деле никогда не было нужно -i
;мне это кажется опасным.
С другой стороны, я использую -k
почти по умолчанию.