Makefile игнорирует segfault

Я пытаюсь использовать GNU Make для автоматического преобразования набора файлов .mmpz в файлы .ogg с помощью lmms. В настоящее время в lmms есть ошибка, из-за которой он segfault после создания выходного файла приводит к тому, что make выдает ошибки. Добавление - перед правилом заставляет make игнорировать ошибку и предотвращает удаление выходного файла, но сообщения об ошибках по-прежнему выдаются. Я пробовал следующее:

-@lmms -r $(MPPZDIR)/$*.mmpz -f ogg -o $(OGGDIR)/$*.ogg
-@lmms -r $(MPPZDIR)/$*.mmpz -f ogg -o $(OGGDIR)/$*.ogg 2> /dev/null
-@lmms -r $(MPPZDIR)/$*.mmpz -f ogg -o $(OGGDIR)/$*.ogg || true

которые все производят что-то вроде

/bin/sh: line 1:  3325 Segmentation fault      (core dumped) lmms -r resources/mmpz/song.mmpz -f ogg -o content/music/song.ogg 2> /dev/null
Makefile:28: recipe for target 'content/music/song.ogg' failed
make: [content/music/song.ogg] Error 139 (ignored)

Учитывая, что segfault ожидается и не указывает на невозможность создания выходного файла, есть ли способ скрыть эту ошибку, пока ошибка не будет исправлена? make -i тоже по-прежнему выдает ошибки.


person rcorre    schedule 02.10.2014    source источник
comment
|| true имеет тот же эффект, что и ведущий -, заставляя make игнорировать ошибку команды lmms.   -  person Etan Reisner    schedule 03.10.2014
comment
@MarkGaleck В этом отношении я полностью с вами согласен. || true абсолютно предпочтительнее лидирующего -. Моя точка зрения заключалась в том, что оба они не нужны, как в третьей строке примера OP.   -  person Etan Reisner    schedule 03.10.2014
comment
@Etan хорошо, я беру свои слова обратно, извините, не очень хороший момент   -  person Mark Galeck    schedule 03.10.2014


Ответы (1)


person    schedule
comment
Это по-прежнему печатает сообщение об ошибке сегментации для каждой ошибки (до того, как будет напечатано ОЖИДАЕМАЯ ОШИБКА:). - person rcorre; 03.10.2014
comment
@murphyslaw о, я вижу, это потому, что ошибка сегментации не является обычным сообщением об ошибке, она не печатается в процессе stderr. Подождите, дайте мне взглянуть на это. - person Mark Galeck; 03.10.2014
comment
@murphyslaw Хорошо, попробуй сейчас - person Mark Galeck; 03.10.2014