我正在编译LLVM以及clang。我注意到编译的输出有llvm[1]:
或llvm[2]:
或llvm[3]
:每行都有前缀。括号中的整数是什么意思?
答案 0 :(得分:1)
目前接受的答案不正确。此外,这实际上是一个GNU Make问题,而不是LLVM问题。
您所看到的是由MAKELEVEL
向命令行回显的make
变量的当前值。此值设置为递归执行的结果。来自GNU make manual:
作为一项特殊功能,变量MAKELEVEL在从一个级别传递到另一个级别时会发生变化。此变量的值是一个字符串,它是十进制数的级别深度。顶级make的值为'0';子项的“1”,子项的“2”,依此类推。当make为配方设置环境时,会发生增量。
如果您手头有GNU Make源代码的副本,您可以看到使用output.c
功能在void message(...)
中生成输出消息。在GNU make v4.2中,这发生在第626行。具体来说,program
参数设置为字符串" llvm"并且makelevel参数的设置如上所述。
由于它被错误地启动,它不是编译工作的编号。 -j [jobs]
或--jobs[=jobs]
选项可同时启用并行执行最多jobs
个配方。如果选择了-j
或--jobs
,但未设置jobs
,则GNU Make会尝试同时执行尽可能多的配方。有关详细信息,请参阅this section of the GNU Make manual。
可以在没有并行执行的情况下进行递归执行,并且可以在没有递归执行的情况下执行并行执行。这是目前接受的答案不正确的主要原因。
答案 1 :(得分:0)
这是编译作业的编号(make -j
)。有助于跟踪编译错误。