Provided by: manpages-es-extra_0.8a-19_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 ;-).

GNU                                              22 Agosto 1989                                         MAKE(1L)