Некоторые компиляторы позволяют вам устанавливать предупреждения как ошибки, так что вы никогда не оставите никаких предупреждений компилятора, потому что если вы это сделаете, код не будет собираться. Это хорошо.
К сожалению, некоторые компиляторы не имеют флаг для предупреждений как ошибок.
Мне нужно написать скрипт оболочки или оболочку, обеспечивающую эту функцию.
Предположительно, он анализирует выходные данные консоли компиляции и возвращает ошибку, если были какие-либо предупреждения компилятора ( или ошибки ), и в противном случае успешное выполнение. «Отказ» также означает (я думаю), что объектный код не должен создаваться.
Какой самый короткий и простой сценарий оболочки UNIX / Linux, который вы можете написать, который отвечает явным требованиям, указанным выше, а также следующим неявным требованиям, которые ведут себя как компилятор:
- принимает все флаги, опции, аргументы
- поддерживает перенаправление stdout и stderr
- создает объектный код и ссылки в соответствии с указаниями
Ключевые слова: элегантный, соответствует всем требованиям.
Дополнительный кредит: легко включить в файл GNU make.
Спасибо за вашу помощь.
=== Подсказки ===
Это решение другой проблемы, использующее функции оболочки (?), Добавление текста к перенаправлениям stderr в bash , может найти значение. Интересно, как пригласить друга litb , который знает bash неплохо "ответить на мой вопрос?
=== Статус ответа ===
Спасибо Чарли Мартину за короткий ответ, но с этого я, к сожалению, и начал. Некоторое время назад я использовал это, выпустил его для использования в офисе, и через несколько часов мне был отмечен его самый серьезный недостаток: он ПРОЙДЕТ компиляцию без предупреждений, а только с ошибками. Это действительно плохо, потому что тогда мы предоставляем объектный код, который компилятор уверен, не будет работать. Простое решение также не соответствует другим перечисленным требованиям.
Спасибо Адаму Розенфилду за стенографию и Крису Додду за введение несанкционированного доступа к решению. Chris ' ответ выглядит ближе всего, потому что я думаю, что pipefail должен гарантировать, что если компиляция действительно завершится с ошибкой, мы получим ошибку, как и должны были. Крис, работает ли pipefail во всех оболочках? И есть какие-нибудь идеи по поводу остальных неявных требований, перечисленных выше?