make V=s の make[number] はどういう意味ですか?

make V=s の make[number] はどういう意味ですか?

make V=sの完全なログの読み取りを有効にすると、ログにmake常に次のように表示されます。 例:make[numer]

datle@debian:~/workspace/cpx/trunk$ make
rm -rf openwrt/tmp
cp config/defaut.config openwrt/.config
cd openwrt && make
make[1]: Entering directory `/home/datle/workspace/cpx/trunk/openwrt'
make[1]: Leaving directory `/home/datle/workspace/cpx/trunk/openwrt'
make[1]: Entering directory `/home/datle/workspace/cpx/trunk/openwrt'
make[2]: Entering directory `/home/datle/workspace/cpx/trunk/openwrt'
Collecting package info: done
Collecting target info: done
Checking 'working-make'... ok.
Checking 'case-sensitive-fs'... ok.
Checking 'getopt'... ok.
Checking 'fileutils'... ok.
Checking 'working-gcc'... ok.
Checking 'working-g++'... ok.
Checking 'ncurses'... ok.
Checking 'zlib'... ok.
Checking 'gawk'... ok.
Checking 'unzip'... ok.
Checking 'bzip2'... ok.
Checking 'patch'... ok.
Checking 'perl'... ok.
Checking 'python'... ok.
Checking 'wget'... ok.
Checking 'git'... ok.
Checking 'gnutar'... ok.
Checking 'svn'... ok.
Checking 'gnu-find'... ok.
Checking 'getopt-extended'... ok.
Checking 'non-root'... ok.
make[3]: Entering directory `/home/datle/workspace/cpx/trunk/openwrt'
Checking 'openssl'... ok.
make[3]: Leaving directory `/home/datle/workspace/cpx/trunk/openwrt'
make[2]: Leaving directory `/home/datle/workspace/cpx/trunk/openwrt'
WARNING: your configuration is out of sync. Please run make menuconfig, oldconfig or defconfig!
 make[2] world
 make[3] target/compile
 make[4] -C target/linux compile
 make[3] package/cleanup
 make[3] package/compile
 make[4] -C package/toolchain compile
 make[4] -C package/wireless-tools compile

私は読んだマニュアルを作るしかし、これについての詳細は見つかりませんでした。

答え1

これらの数字は を表しmakelevel、サブメイクがトップレベルの とどのように関連しているかがわかりますmake

これはmakeの再帰的な使用です。詳細については、こちらをご覧ください。ここ

ソースコードを詳しく調べるとmake、より明確なことがわかります。

main.c

/* Value of the MAKELEVEL variable at startup (or 0).  */                       

unsigned int makelevel;

その後:

/* Figure out the level of recursion.  */                                     
  {                                                                             
    struct variable *v = lookup_variable (STRING_SIZE_TUPLE (MAKELEVEL_NAME));  
    if (v && v->value[0] != '\0' && v->value[0] != '-')                         
      makelevel = (unsigned int) atoi (v->value);                               
    else                                                                        
      makelevel = 0;                                                            
  }

output.c

/* Use entire sentences to give the translators a fighting chance.  */        
  if (makelevel == 0)                                                           
    if (starting_directory == 0)                                                
      if (entering)                                                             
        fmt = _("%s: Entering an unknown directory\n");                         
      else                                                                      
        fmt = _("%s: Leaving an unknown directory\n");                          
    else                                                                        
      if (entering)                                                             
        fmt = _("%s: Entering directory '%s'\n");                               
      else                                                                      
        fmt = _("%s: Leaving directory '%s'\n");                                
  else

印刷する前に出力をフォーマットします。

if (makelevel == 0)                                                           
    if (starting_directory == 0)                                                
      sprintf (p, fmt , program);                                               
    else                                                                        
      sprintf (p, fmt, program, starting_directory);                            
  else if (starting_directory == 0)                                             
    sprintf (p, fmt, program, makelevel);                                       
  else                                                                          
    sprintf (p, fmt, program, makelevel, starting_directory);                   

  _outputs (NULL, 0, buf);

注記

関連情報