make - молча удалять промежуточные файлы

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

Есть ли способ молча удалить эти промежуточные файлы, чтобы после завершения сборки ничего не отображалось, а сообщение типа «Удаление промежуточных файлов» отображалось?


person Karathan    schedule 31.08.2017    source источник


Ответы (2)


Вы можете запустить make -s или собрать свою собственную версию make с применением этого патча:

diff --git file.c file.c
index ae1c285..de3c426 100644
--- file.c
+++ file.c
@@ -410,18 +410,6 @@ remove_intermediates (int sig)
                   {
                     if (! doneany)
                       DB (DB_BASIC, (_("Removing intermediate files...\n")));
-                    if (!silent_flag)
-                      {
-                        if (! doneany)
-                          {
-                            fputs ("rm ", stdout);
-                            doneany = 1;
-                          }
-                        else
-                          putchar (' ');
-                        fputs (f->name, stdout);
-                        fflush (stdout);
-                      }
                   }
                 if (status < 0)
                   perror_with_name ("unlink: ", f->name);
person akond    schedule 31.08.2017
comment
-s - это своего рода решение, но я думаю, что не могу просто скомпилировать свою собственную версию, потому что другие также должны иметь возможность скомпилировать мой код, и я не хочу несоответствий. - person Karathan; 01.09.2017

Расширяя принятый ответ, вы можете изменить флаги Make из самого Makefile (как показано здесь). Итак, для вашей ситуации вы можете включить это в верхнюю часть вашего Makefile:

MAKEFLAGS += --silent

Единственное, о чем следует помнить, это то, что флаг --silent отключает все выходные данные Make. Включая уведомления «Ничего не делать».

Редактировать:

Вы также можете добавить свою цель в качестве зависимости от .SILENT, как описано в https://www.gnu.org/software/make/manual/html_node/Special-Targets.html.

person gtramontina    schedule 02.12.2020