Как создать сборку make, которая будет подробна только при сбое

#debugging #makefile #cmake #output

Вопрос:

Существует множество способов создания подробной make команды с cmake помощью . Это было описано во многих местах. (в основном cmake; make VERBOSE=1 или установите CMAKE_VERBOSE_MAKEFILE переменную).

Подробное описание здесь относится к отображению вызываемых команд и другой информации о шагах, предпринятых make .

Похоже, это установка «все или ничего». Либо вы видите все команды, либо ни одной из команд, независимо от того, выполнена команда успешно или нет.

Связанный инструмент ctest (для тестирования) имеет очень полезные опции --output-on-failure , детализация которых зависит от успешного выполнения конкретного теста; отображается только экран для неудачных тестов.

Вопрос в том, есть ли cmake аналогичная функция, касающаяся предоставления подробной информации только в случае сбоя. То есть, по большей части я не хочу видеть make команды компиляции, но когда это не удается, я хотел бы посмотреть, какая именно команда не удалась со всеми отображаемыми параметрами.

То есть вопрос в том, есть ли какая-либо настройка или опция командной строки для make или cmake которая на этапе сборки выведет полную выданную команду (и вывод) только для команд, которые завершились неудачно.

Причина, конечно, в том, что это дает возможность видеть фактические флаги компиляции для неудачного шага и позволяет иногда интерактивно воспроизводить точную команду.

(Я использую C , но вопрос, я думаю, общий)

Ответ №1:

Это не совсем ответ , потому что вы только упомянули make , но то, что вы спрашиваете, является поведением ниндзя по умолчанию. Он выводит только ту команду, которая не удалась.

Ответ №2:

Иногда, когда я слишком отчаиваюсь и не могу понять сообщения об ошибках, я делаю это:

 make -j 10 -k || make  VERBOSE=1
 

Таким образом, он будет быстро компилироваться, и в случае сбоя он снова запускается последовательно в подробном режиме. Весьма вероятно, что первая компиляция является неудачной.