【问题标题】:what the [n] in the make[n] means?make[n] 中的 [n] 是什么意思?
【发布时间】:2013-12-22 09:52:13
【问题描述】:

当我使用 makefile 时,我经常在输出中看到 make[1]... make[2] ... 例如:

make  all-recursive                        
make[1]: Entering directory `./splint-3.1.2'
Making all in src                                                                
make[2]: Entering directory `./src'
grep "FLG_" flags.def > Headers/flag_codes.gen                                       
make                                                                                 
make[3]: Entering directory `.splint-3.1.2/src'

make[n] 中的 [n] 是什么意思?

【问题讨论】:

  • 如果您仔细查看输出,您也许可以回答您自己的问题。 (提示:输入...)
  • 提示 2 - 递归?

标签: compilation makefile gnu-make


【解决方案1】:

cmets 是正确的 - [n] 指的是递归级别。在这一点上,我想指出相关文档,但我通过 GNU make documentation 的扫描在这方面没有发现任何东西 - 也许我遗漏了一些东西。

如果做不到这一点,我们可以求助于source code。 [n] 是 main.c 中的 int makelevel 变量。这对应于MAKELEVEL automatic make variable:

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

【讨论】:

  • 所以如果我理解正确 - 这与递归无关 - 当一个 make 调用另一个 make(相同或不同的)时 [n] 增量......我是对的吗?
  • @yehudahs:递归就是这样:某种东西自称。
  • 我知道什么是递归。我在问 [n] 是否只会在递归时增加(仅在 make 调用本身时)或在每个调用另一个 make 的 make 中增加......
  • @yehudahs - “make 调用自己”和“make that call another make”有什么区别?您是在谈论 make 的不同版本吗?或不同的makefile?或者是其他东西?在 make/Makefiles 的上下文中,“递归”通常是指调用另一个 make 过程的配方,通常在另一个目录/不同的 Makefile 中。 gnu.org/software/make/manual/html_node/Recursion.html#Recursion
猜你喜欢
  • 2020-02-23
  • 2017-12-29
  • 2015-09-02
  • 2017-07-27
  • 2010-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多