![¿Qué significa hacer[número] en hacer V=s?](https://rvso.com/image/38799/%C2%BFQu%C3%A9%20significa%20hacer%5Bn%C3%BAmero%5D%20en%20hacer%20V%3Ds%3F.png)
Cuando habilito make V=s
la lectura del registro completo de make
. Siempre veo make[numer]
en el registro.
p.ej:
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
yo leo elhacer manualpero no encontré ningún detalle sobre esto.
Respuesta1
Esos números representan makelevel
, lo que nos permite saber cómo se relaciona la submarca con el nivel superior make
.
Este es el uso recursivo de make, ver más detallesaquí.
Profundizando en make
el código fuente, puedes ver algo más claro.
En main.c
:
/* Value of the MAKELEVEL variable at startup (or 0). */
unsigned int makelevel;
y luego:
/* 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;
}
En 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
Y formatee la salida antes de imprimir:
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);
Nota
- Fuentehacer