有没有办法知道makefile正在使用-j运行并行执行

问题描述

GNU Make的-j选项很方便,尽管您必须注意依赖项。在我的环境中,它加快了5-6倍的构建和测试时间。但是我想在覆盖范围内运行测试,这会造成一个问题,因为gcov工具无法很好地处理并发,基本上是尝试同时写入相同的.gcda文件

我已经弄清楚了如何将覆盖率信息引导到每个测试的单独目录中,这是可行的。但是,这会导致对所有覆盖率信息进行后处理的代价。

因此,我正在寻找一种方法来确定调用中是否使用了-j,以便能够在不需要时自动避免进行额外的处理。有可能吗?

解决方法

默认情况下,您应该能够访问用于通过MAKEFLAGS来调用make的参数,该参数是自动设置的,基本上可以知道如何调用make并将其传播到子make中。进程。