O que faz [number] significar em make V = s?

3

Quando eu habilito make V=s para ler o log completo de make . Eu sempre vejo make[numer] no log.
por exemplo:

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

Eu li o manual mas não encontrei nenhum detalhe sobre isso

    
por trandatnh 27.06.2014 / 04:58

1 resposta

5

Esses números representam makelevel , o que nos informa como o sub-make se relaciona com o nível superior make .

Este é o uso recursivo do make, veja mais detalhes aqui .

Pesquisando no código-fonte make , você pode ver algo mais claro.

Em main.c :

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

unsigned int makelevel;

e depois:

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

Em output.c :

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);

E formate a saída antes de imprimir:

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

unsigned int makelevel;

Nota

por 27.06.2014 / 06:43