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 所述。
构建链式规则时,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 所述。