make:启动进程,如果被杀死,不会杀死make

make:启动进程,如果被杀死,不会杀死make

我用来GNU make启动 R 中不同写入/读取调用的基准测试。在某些情况下,这将导致我的 RAM 被完全使用并且进程被终止(这很好,因为我想看到限制)。

然而问题是,整个 make 进程都被终止,而不仅仅是特定的脚本调用。

例如,假设我有以下目标Makefile,目标small.csv工作正常,large.csv崩溃(有点预期),但现在其他...目标尚未构建。

Rscript tester --size large问题是,如何以一种方式启动进程 ( ),以便在一个进程被终止后make可以继续其他 ( ) 基准测试?...

# Makefile

.PHONY: all

all: small.csv large.csv ...

small.csv: tester.R
    Rscript tester.R --size small

large.csv: tester.R
    Rscript tester.R --size large

...

请注意,脚本在第一行中触及目标,因此无论运行是否被终止,目标都会被创建。

答案1

发生这种情况是因为如果任何命令指示失败,Make 默认会停止执行。

您可以通过以下方式禁用此功能在命令前面加上前缀-

small.csv: tester.R
        -Rscript tester.R --size small

large.csv: tester.R
        -Rscript tester.R --size large

或者,您可以make使用选项-k来告诉它在发生错误后尽可能继续运行。

相关内容