Скажем, у меня есть следующие файлы:
buggy_program:
#!/bin/sh
echo "wops, some bug made me exit with failure"
exit 1
Makefile:
file.gz:
buggy_program | gzip -9 -c >[email protected]
Теперь, если я наберу make
, GNU make с радостью построит file.gz
, хотя buggy_program
выйдет с ненулевым статусом.
В bash я мог бы сделать set -o pipefail
, чтобы сделать выход конвейера с ошибкой, если хотя бы одна программа в конвейере завершила сбой. Есть ли аналогичный метод в GNU make? Или какое-то обходное решение, которое не связано с временными файлами? (Причина gzipping здесь заключается в том, чтобы избежать огромного временного файла.)