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

この数字はforを表しmakelevel、これにより、子makeが最上位レベルとどのように関連しているかがわかります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);

ノート

おすすめ記事