Provided by: manpages-es-extra_0.8a-17_all bug

NOMBRE

       make - utilidad `make' de GNU para mantener grupos de programas

SINOPSIS

       make [ -f makefile ] [ opción ] ... [ variable=valor ] ... [ objetivo ] ...

AVISO

       Esta  página del Manual es un extracto de la documentación de GNU make.  Se actualiza sólo
       ocasionalmente, porque el proyecto GNU no emplea nroff  (ni  incluso  groff  ;-)  para  su
       documentación.  Para  la  documentación  completa  y  al  día, remítase al fichero make en
       formato Info, o al fichero make.dvi en formato DVI, que se construyen a partir del fichero
       fuente escrito en TeXInfo make.texinfo.

DESCRIPCIÓN

       El  propósito  de la utilidad make es determinar automáticamente qué piezas de un programa
       necesitan ser recompiladas, y lanzar las órdenes para recompilarlas.  Este manual describe
       la  implementación  de  make  del  proyecto  GNU,  que ha sido escrita por el gran Richard
       Stallman y por Roland McGrath.  Nuestros ejemplos muestran programas en C, que es  lo  más
       común,  pero  se puede emplear make con cualquier lenguaje de programación cuyo compilador
       pueda ejecutarse con una orden del shell.  De hecho, make  no  está  limitado  a  compilar
       programas.   Se puede usar para describir cualquier tarea donde algunos ficheros deban ser
       actualizados automáticamente a partir de otros en cualquier momento en que éstos cambien.

       Para prepararnos a utilizar make, debemos escribir antes un fichero  llamado  el  makefile
       que  describe  las  relaciones  entre  los  ficheros  de  nuestro  programa, y las órdenes
       necesarias  para  actualizar  cada  fichero.   En  un  programa,  normalmente  el  fichero
       ejecutable  se actualiza a partir de los ficheros o módulos objeto, los cuales a su vez se
       construyen mediante la compilación de los ficheros con el código fuente.

       Una vez que exista un makefile apropiado, cada vez que  cambiemos  algún  fichero  fuente,
       esta simple orden:

              make

       basta y sobra para que se realicen todas las recompilaciones necesarias.  El programa make
       emplea los datos del makefile (y otros internos) y los tiempos de última  modificación  de
       los  ficheros  para  decidir cuáles de ellos necesitan ser actualizados.  Para cada uno de
       esos ficheros, lanza las órdenes que tiene grabadas en su base de datos.

       make ejecuta órdenes en el makefile para actualizar uno o más nombres de  objetivo,  donde
       nombre  es  típicamente  un  programa.   Si  no  se ha dado la opción -f, make buscará los
       makefiles llamados GNUmakefile, makefile, y Makefile, en este orden, parando en el primero
       que encuentre y dando un error si no encuentra ninguno.

       Normalmente  deberíamos  llamar  a  nuestro  makefile  o  bien  makefile  o bien Makefile.
       (Recomendamos Makefile porque normalmente aparece cerca del principio del  listado  de  un
       directorio,  al  lado  de otros ficheros importantes como LÉAME.)  El primer nombre que se
       busca, GNUmakefile, no  se  recomienda  para  la  mayoría  de  los  makefiles.   Solamente
       deberíamos emplear este nombre si tenemos un makefile que sea específico del make de GNU y
       no pueda ser leído y comprendido por otras versiones de make.  Si makefile es `-', se  lee
       de la entrada estándar.

       make  actualiza  un objetivo si éste depende de ficheros de prerrequisito (o dependencias)
       que hayan sido modificados desde la última modificación del objetivo, o si éste no existe.

OPCIONES

       -b

       -m   Estas opciones no hacen nada, y  sólo  se  reconocen  por  compatibilidad  con  otras
            versiones de make.

       -C dir
            Cambia  el directorio de trabajo a dir antes de leer los makefiles o hacer otra cosa.
            Si se especifican varias opciones -C,  cada  una  se  interpreta  en  relación  a  la
            anterior:  -C / -C etc es equivalente a -C /etc.  Esto se usa típicamente en llamadas
            recursivas a make.

       -d   Muestra información de depuración además del procesamiento normal.  Esta  información
            dice  qué  ficheros  están  siendo  considerados  para  ser  rehechos, qué tiempos de
            ficheros están siendo  comparados  y  con  qué  resultados,  qué  ficheros  necesitan
            realmente ser rehechos, qué reglas implícitas están siendo tenidas en cuenta y cuáles
            se están aplicando: o sea, todo lo interesante sobre cómo make decide las  cosas  que
            tiene que hacer.

       -e   Da  a  las  variables  que  vienen  del  entorno  precedencia a las que vienen de los
            makefiles.

       -f makefile
            Emplea makefile como un makefile.

       -i   No tiene en cuenta ningún error en las órdenes ejecutadas para reconstruir ficheros.

       -I dir
            Especifica un directorio dir en donde buscar makefiles incluidos.  Si se usan  varias
            opciones  -I  para  especificar varios directorios, éstos se buscan en el orden dado.
            De forma distinta a como se deben dar los argumentos de otras opciones de  make,  los
            directorios  dados  en  las opciones -I pueden ir inmediatamente tras la I: o sea, se
            permite tanto -Idir como -I dir.  Esta sintaxis se permite por compatibilidad con  la
            misma opción -I del preprocesador de C.

       -j trabajos
            Especifica el número de trabajos (órdenes) que se deban ejecutar simultáneamente.  Si
            hay más de una opción -j, sólo la última vale.  Si se da  la  opción  -j  sin  ningún
            argumento,  make  no  pondrá  límites  al  número  de  trabajos que puedan ejecutarse
            simultáneamente.

       -k   Continúa tanto como sea posible tras un error.   Mientras  que  el  objetivo  que  ha
            fallado,  y  los  que  dependen  de  él,  no  pueden  ser  reconstruidos,  las  otras
            dependencias de estos objetivos sí que pueden procesarse, así que con esta opción  se
            procesan.

       -l

       -l carga
            Dice  que no deberá empezarse ningún nuevo trabajo (mandato) si hay otros trabajos en
            ejecución y la carga media es como poco carga (un número  real,  en  coma  flotante).
            Sin el argumento, anula un límite anterior de carga, si lo hubiera.

       -n   Muestra las órdenes que se ejecutarían, pero no se hace nada más. Muy útil.

       -o fichero
            No   reconstruye  el  fichero  especificado,  incluso  siendo  más  antiguo  que  sus
            dependencias,  y  tampoco  reconstruye  nada  que  dependa  de  cambios  en  fichero.
            Esencialmente  el  fichero  se  trata  como muy viejo, y sus reglas no son tenidas en
            cuenta.

       -p   Muestra la base de datos (reglas y valores de variables) que  resultan  de  leer  los
            makefiles;  luego todo se procesa de la forma usual o de la que se haya especificado.
            También se muestra la información de versión dada por la opción -v (vea  más  abajo).
            Para  ver  la  base  de  datos  sin  hacer  ninguna  otra  cosa,  dé la orden make -p
            -f/dev/null.

       -q   ``Modo de interrogación (Query)''.  No ejecuta ninguna orden ni  muestra  nada;  sólo
            devuelve   un  status  de  salida  cero  si  los  objetivos  especificados  ya  están
            actualizados, o no cero si no lo están.

       -r   Elimina el empleo de las reglas implícitas  incorporadas.   También  borra  la  lista
            predeterminada de sufijos para las reglas de sufijo.

       -s   Modo de operación silencioso; no muestra las órdenes que se están ejecutando.

       -S   Cancela  el  efecto  de  la  opción  -k.   Esto  nunca  es necesario salvo en un make
            recursivo, en el que -k puede venir heredado del make superior a través de  MAKEFLAGS
            o si activamos -k en la variable de ambiente MAKEFLAGS.

       -t   Toca  los  ficheros  (los marca como actualizados sin cambiarlos realmente) en vez de
            ejecutar las órdenes pertientes.  Esto se emplea para pretender que las  órdenes  han
            sido ejecutadas, con el fin de engañar a futuras ejecuciones de make.

       -v   Muestra  la  versión  del  programa  make más la lista de autores, una nota sobre los
            derechos de copia y otra sobre la falta de garantía y  a  dónde  enviar  informes  de
            fallos.    Después   de   imprimirse  esta  información,  el  procesamiento  continúa
            normalmente. Para obtener esta información sin ningún otro efecto, dé la  orden  make
            -v -f/dev/null.

       -w   Muestra  un  mensaje  conteniendo  el  directorio  de trabajo antes y después de otro
            procesamiento.  Esto puede ser útil para seguir la pista  a  errores  que  vienen  de
            anidamientos complicados de órdenes make recursivas.

       -W fichero
            Pretende  que  el  objetivo fichero acaba de ser modificado.  Cuando se emplea con la
            opción -n, esto nos enseña lo que pasaría si fuéramos a modificar ese  fichero.   Sin
            -n,  es  casi lo mismo que ejecutar la orden touch en el fichero dado antes de dar la
            orden make, salvo en que  el  tiempo  de  modificación  se  cambia  solamente  en  la
            imaginación de make.

OTROS ARGUMENTOS

       variable=valor
            Le  da a la variable de make el valor especificado. Esta definición tiene precedencia
            sobre la que pudiera haber en el makefile.

       objetivo
            Cualquier argumento que no empiece por - o que no contenga un signo = se considera un
            objetivo  que  make  tiene  que  construir.  Si no se menciona ninguno en la línea de
            órdenes, make construirá el primer objetivo que encuentre en el makefile.

VÉASE TAMBIÉN

       /usr/info/make.info*
                           The GNU Make Manual

FALLOS

       Consulte el capítulo `Problems and Bugs' en The GNU Make Manual.

AUTORES

       Dennis Morse, de la Stanford University, escribió originalmente esta  página  del  Manual.
       Roland  McGrath  trabajó  posteriormente  en  ella.   Fue traducida al español por Gerardo
       Aburruzaga García (gerardo@cica.es), quien añadió además algunas líneas  (además  de  ésta
       ;-).