Как сделать так, чтобы некоторые предупреждения не выполнялись, но не другие - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть файл make, который включает в себя:

%.dat: %.txt
   ... PREPROCESSING OF TEXT FILE
   tidy -o $*.html $<
   ... FURTHER PROCESSING

tidy выдает много предупреждений, которые я могу подавить с помощью флага --show-warnings false, но, несмотря на подавление предупреждений, статус выхода из tidy по-прежнему 1 вместо 0, и поэтому make терпит неудачу на протяжении части рецепта.Как я могу make продолжить перед лицом tidy, дающим статус выхода 1, и в то же время позволяющим make завершиться неудачей, если какой-либо другой рецепт выдаст предупреждения?

Я посмотрел на эти два вопроса ( Сделайте make fail, если модульные тесты не пройдут и gcc, make: как отключить сбой при предупреждении? ), но, похоже, ни один из них не решает эту проблему.

ПОСЛЕ РЕДАКТИРОВАНИЯ: В Make: как продолжить после сбоя команды? , вопрос относится к тому, как получить make для продолжения после любого отличного от нулясостояние выхода при выполнении определенной команды, в то время как в моем случае я хочу, чтобы состояние выхода 2 из tidy указывало на ошибки, вызывало сбой make, но я хочу состояние выхода 1 из tidy, указывающее предупрежденияto allow сделать, чтобы продолжить`.

1 Ответ

0 голосов
/ 10 февраля 2019

Самое простое решение:

tidy -o $*.html $< || true

Так что, если код выхода tidy не равен нулю, true выдает нулевой код выхода.

Но проверьте коды выхода tidy :

Состояние выхода

0

Все входные файлы были успешно обработаны.

1

Были предупреждения.

2

Произошли ошибки.

Возможно, вы хотите пропустить только код ошибки 1.В этом случае:

tidy -o $*.html $< || [ $$? -eq 1 ] && true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...