Was bedeutet make[number] in make V=s?

Was bedeutet make[number] in make V=s?

Wenn ich make V=sdas Lesen des vollständigen Protokolls aktiviere, wird im Protokoll makeimmer Folgendes angezeigt , z. B.: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

Ich lese dasmanuell erstellenAber ich habe keine Einzelheiten dazu gefunden.

Antwort1

Diese Zahlen stehen für makelevel, wodurch wir erfahren, in welcher Beziehung Sub-Make zur obersten Ebene steht make.

Dies ist die rekursive Verwendung von make, siehe weitere DetailsHier.

Wenn Sie sich makeden Quellcode genauer ansehen, wird Ihnen etwas klarer.

In main.c:

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

unsigned int makelevel;

und dann:

/* 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;                                                            
  }

In 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

Und formatieren Sie die Ausgabe vor dem Drucken:

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

Notiz

verwandte Informationen