Как проверить статус выхода вызова оболочки Makefile?
У меня есть Makefile, который запускает программу, которая с успехом возвращает ненулевое значение, а при ошибке возвращает другое ненулевое значение. Я знаю, что я могу игнорировать статус выхода, префикс команды с помощью -, но это не работает, потому что мне нужно знать, удалась ли команда.
Ответы
Ответ 1
Вы можете проверить возвращаемое значение второй команды в той же строке Makefile, используя переменную shell $?
, которая содержит последнее возвращаемое значение.
Например, с помощью команды false
, которая, очевидно, остановит компиляцию:
test:
/bin/false ; /usr/bin/test "$$?" -eq 1 # <-- make does not stop here
/bin/echo "Continues ..."
/bin/false # <-- make stops here
Ответ 2
Использование
command || [ $$? -eq v ]
в качестве вашей команды, заменив команду командой, и v со значением, полученным при успешном завершении.
(Это всего лишь более компактная версия ответа Дидье Троссе.)
Ответ 3
В зависимости от того, как инструмент ведет себя с ошибкой, вы можете просто проверить наличие выходного файла. что-то вроде:
@if test ! -f $(FILE); then exit 2; fi