make - 静默删除中间文件

make - remove intermediate files silently

构建链式规则时,make 会在构建过程结束时自动调用 rm 以删除任何中间文件。因为我有大约 400 个中间文件要删除,所以控制台输出严重泛滥。

有没有办法静默地 rm 那些中间文件,以便在构建完成后不再回显任何内容,或者回显 "Removing intermediate files" 之类的消息?

您可以 运行 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);

扩展已接受的答案,您可以从 Makefile 本身修改 Make 的标志(如 here 所示)。因此,根据您的情况,您可以将其包含在 Makefile:

的顶部
MAKEFLAGS += --silent

唯一需要注意的是 --silent 标志会沉默 all Make 的输出。包括“无事可做”通知。

编辑:

您还可以将目标作为依赖项添加到 .SILENT,如 https://www.gnu.org/software/make/manual/html_node/Special-Targets.html 所述。