Clang 编译llvm时llvm[n]的含义,其中n是一个整数

Clang 编译llvm时llvm[n]的含义,其中n是一个整数,clang,llvm,gnu-make,Clang,Llvm,Gnu Make,我正在编译LLVM和clang。我注意到编译的输出在每行前面都有llvm[1]:或llvm[2]:或llvm[3]:前缀。括号中的整数是什么意思?是编译作业的编号(make-j)。有助于跟踪编译错误。显然,它与编译作业的编号无关(可以通过make-j 1轻松检查)。基于autoconf的构建系统指示源树中makefile的“级别”)。作为价格,它是make的MAKELEVEL变量的值。当前接受的答案不正确。此外,这实际上是一个GNU生成问题,而不是LLVM问题 您看到的是make向命令行回显的M

我正在编译LLVM和clang。我注意到编译的输出在每行前面都有
llvm[1]:
llvm[2]:
llvm[3]
:前缀。括号中的整数是什么意思?

是编译作业的编号(
make-j
)。有助于跟踪编译错误。

显然,它与编译作业的编号无关(可以通过make-j 1轻松检查)。基于autoconf的构建系统指示源树中makefile的“级别”)。作为价格,它是make的MAKELEVEL变量的值。

当前接受的答案不正确。此外,这实际上是一个GNU生成问题,而不是LLVM问题

您看到的是
make
向命令行回显的
MAKELEVEL
变量的当前值。此值设置为递归执行的结果。从:

作为一个特殊特性,变量MAKELEVEL在从一个级别传递到另一个级别时会发生更改。此变量的值是一个字符串,它是以十进制数表示的标高深度。顶级make的值为“0”1'表示子品牌,2'表示子品牌,依此类推。当make为配方设置环境时,会发生增量

如果您手头有GNU Make源代码的副本,您可以在
output.c
中通过
void message(…)
函数看到正在生成的输出消息。在GNU make v4.2中,这发生在第626行。具体来说,
program
参数设置为字符串“llvm”,makelevel参数设置如上所述

因为它被错误地提出来了,所以它不是编译作业的编号。
-j[jobs]
--jobs[=jobs]
选项可同时执行多达
作业的并行执行。如果选择了
-j
-jobs
,但未设置
jobs
,GNU将尝试同时执行尽可能多的配方。有关更多信息,请参阅


可以在没有并行执行的情况下进行递归执行,也可以在没有递归执行的情况下进行并行执行。这是目前被接受的答案不正确的主要原因。

愚蠢的问题。什么是编译作业?
make-j
允许您同时编译多个源文件(或项目):。