Как заставить GNU make печатать подробную информацию, но только при ошибке

У меня есть система сборки, которая использует CMake для создания файлов Makefile. По умолчанию make не будет повторять команды (например, g++ -std=c++11 ...), но мы можем указать VERBOSE=1 для этого.

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

Есть такая настройка?

GNU Make по умолчанию показывает каждую команду полностью (т. Е. Если только @ не имеет префикса для команд рецептов, которые не должны повторяться). Переменная VERBOSE не имеет внутреннего значения для make. Он используется другими системами сборки, особенно CMake, которые генерируют make-файлы для GNU Make, которые будут выдавать команды рецептов с отключенным звуком @, если не был определен VERBOSE. Если ваш вопрос действительно касается CMake или другой системы сборки, уточните его.

Mike Kinghan 27.07.2018 12:17
VERBOSE=1 не является «настройкой» GNU make. Это настройка, созданная людьми, которые написали ваши make-файлы (я подозреваю, что это CMake, поскольку они ее используют). Так что, если люди, написавшие ваши make-файлы, не предоставили вам средства, которые вы ищете, ответ будет отрицательным ... вам придется спросить их, чтобы убедиться. FWIW, Makefiles, созданные CMake, не имеют такой функции (о которой я знаю).
MadScientist 27.07.2018 14:43

Спасибо: я не знал об этом, так как я сам не создавал систему сборки, которую использую. Однако я помню, что созданные вручную Makefile будут полностью повторять свои команды (с ошибкой или без ошибки).

Anton 28.07.2018 03:44

Свернутые вручную make-файлы ведут себя так, как их написал автор. Если бы автор написал их так, чтобы они всегда полностью повторяли свои команды, они бы так и сделали. Если нет, то нет. правда, что по умолчанию в простом рецепте без параметров, которые можно указать иначе, make будет повторять команду, которую он собирается запустить, до того, как запустит команду. Но есть способы изменить это поведение как автором make-файла, так и пользователем make-файла.

MadScientist 29.07.2018 01:44
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
228
0

Другие вопросы по теме