有没有办法知道makefile是运行 -j(并行执行)

Is there a way to know that the makefile is running with -j (parallel execution)

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

我已经想出如何将覆盖率信息引导到每个测试的单独目录中,这很有效。然而,这会招致 post 处理所有覆盖信息的惩罚。

所以我正在寻找一种方法来知道 -j 是否已在调用中使用,以便能够在不需要时自动避免额外的处理。这可能吗?

默认情况下,您应该能够访问用于通过 MAKEFLAGS 调用 make 的参数,这些参数是自动设置的,并且基本上知道如何调用 make 并允许将它们传播到 sub-make 进程。