InglésFrancésEspañol

Ad


icono de página de OnWorks

makeposix - Online en la nube

Ejecute makeposix en el proveedor de alojamiento gratuito de OnWorks sobre Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS

Este es el comando makeposix que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.

PROGRAMA:

NOMBRE


hacer - mantener, actualizar y regenerar grupos de programas (SOSTENIBLE)

SINOPSIS


para lograr [−einpqrst] [−f makefile]... [−k | −S] [macro=propuesta de...]
[nombre_objetivo...]

DESCRIPCIÓN


El para lograr La utilidad actualizará los archivos que se deriven de otros archivos. Un caso típico es
uno en el que los archivos de objeto se derivan de los archivos de origen correspondientes. los para lograr utilidad
examina las relaciones de tiempo y actualizará los archivos derivados (llamados objetivos) que
tener tiempos modificados antes que los tiempos modificados de los archivos (llamados requisitos previos)
del cual se derivan. Un archivo de descripción (makefile) contiene una descripción del
relaciones entre archivos y los comandos que deben ejecutarse para actualizar la
objetivos para reflejar los cambios en sus requisitos previos. Cada especificación o regla deberá
constan de un objetivo, prerrequisitos opcionales y comandos opcionales que se ejecutarán cuando
El requisito previo es más reciente que el objetivo. Hay dos tipos de reglas:

1. Inferencia reglas, que tienen un nombre de destino con al menos un ('.') y no
("/")

2. Target reglas, que puede tener más de un nombre de destino

Además, para lograr tendrá una colección de macros integradas y reglas de inferencia que
inferir relaciones de requisitos previos para simplificar el mantenimiento de los programas.

Para recibir exactamente el comportamiento descrito en esta sección, el usuario debe asegurarse de que un
el archivo MAKE portátil deberá:

* Incluir el objetivo especial .POSIX

* Omita cualquier objetivo especial reservado para implementaciones (un período inicial seguido de
letras mayúsculas) que no ha sido especificado por esta sección

El comportamiento de para lograr no se especifica si no se cumple una de estas condiciones o ambas.

CAMPUS


El para lograr La utilidad deberá cumplir con el volumen de Definiciones Básicas de POSIX.1‐2008, Sección
12.2, Utilidad Sintaxis Líneas directrices, a excepción de la Directriz 9.

Se admitirán las siguientes opciones:

−e Hacer que las variables de entorno, incluidas aquellas con valores nulos, anulen la macro.
asignaciones dentro de archivos MAKE.

−f makefile
Especifique un archivo MAKE diferente. El argumento makefile es un nombre de ruta de un
archivo de descripción, que también se conoce como makefile. Un nombre de ruta de '-'
Denotará la entrada estándar. Puede haber varias instancias de esta opción,
y se procesarán en el orden especificado. El efecto de especificar el
el mismo argumento de opción más de una vez no está especificado.

−yo Ignore los códigos de error devueltos por los comandos invocados. Este modo es el mismo que si el
objetivo especial .IGNORAR se especificaron sin requisitos previos.

−k Continúe actualizando otros objetivos que no dependen del objetivo actual si un
Se produce un error no ignorado al ejecutar los comandos para actualizar un objetivo.
fecha.

−norte Escribir comandos que se ejecutarían en la salida estándar, pero no ejecutar
ellos. Sin embargo, las lneas con un ('+') se ejecutará el prefijo. En esto
modo, líneas con un signo arroba ('@') el prefijo de carácter se escribirá en estándar
salida.

−pag Escriba en la salida estándar el conjunto completo de definiciones de macros y destino
descripciones. El formato de salida no está especificado.

−q Devuelve un valor de salida cero si el archivo de destino está actualizado; de lo contrario, devuelve un
valor de salida de 1. Los objetivos no se actualizarán si se especifica esta opción.
Sin embargo, una línea de comando Makefile (asociada con los destinos) con un
signo> ('+') se ejecutará el prefijo.

−r Borre la lista de sufijos y no utilice las reglas integradas.

−S Terminar para lograr si ocurre un error al ejecutar los comandos para traer un objetivo
A hoy. Este será el valor predeterminado y lo contrario de −k.

−s No escriba líneas de comando makefile ni mensajes táctiles (consulte −t) al estándar
salida antes de ejecutar. Este modo será el mismo que si el objetivo especial
.SILENCIO se especificaron sin requisitos previos.

−t Actualice la hora de modificación de cada objetivo como si contacto dirigidos y destilado
ejecutado. Objetivos que tienen requisitos previos pero no comandos (consulte Target Reglas), o
que ya estén actualizados, no se tocarán de esta manera. Escribir
mensajes a la salida estándar para cada archivo de destino indicando el nombre del archivo
y que fue tocado. Normalmente, el makefile líneas de comando asociadas con
cada objetivo no se ejecuta. Sin embargo, una línea de comando con un ('+')
se ejecutará el prefijo.

Cualquier opción especificada en el HACER BANDERAS La variable de entorno se evaluará antes que cualquier
opciones especificadas en el para lograr línea de comando de utilidad. Si el −k y −S las opciones son ambas
especificado en el para lograr línea de comando de utilidad o por el HACER BANDERAS variable de entorno, la
prevalecerá la última opción especificada. Si el −f or −pag las opciones aparecen en el
HACER BANDERAS variable de entorno, el resultado no está definido.

OPERANDOS


Se admitirán los siguientes operandos:

nombre_objetivo
Nombres de destino, como se define en la sección DESCRIPCIÓN EXTENDIDA. Si no hay objetivo
especificado, mientras para lograr está procesando los archivos MAKE, el primer objetivo que para lograr
Se utilizarán encuentros que no sean un objetivo especial o una regla de inferencia.

macro=propuesta de
Definiciones de macros, tal como se definen en Macros.

Si nombre_objetivo y macro=propuesta de los operandos se entremezclan en el para lograr comando de utilidad
línea, los resultados no están especificados.

ESTÁNDAR


La entrada estándar se utilizará solo si el makefile opción-argumento es '-'. Consulte las
Sección INPUT FILES.

ENTRADA ARCHIVOS


El archivo de entrada, también conocido como archivo MAKE, es un archivo de texto que contiene reglas, macro
definiciones y comentarios. Consulte la sección DESCRIPCIÓN EXTENDIDA.

MEDIO AMBIENTE VARIABLES


Las siguientes variables de entorno afectarán la ejecución de para lograr:

IDIOMA Proporcione un valor predeterminado para las variables de internacionalización que no están configuradas o
nulo. (Consulte el volumen de Definiciones básicas de POSIX.1‐2008, Sección 8.2,
Internacionalización Variables por la precedencia de la internacionalización
variables utilizadas para determinar los valores de las categorías de configuración regional).

LC_TODOS Si se establece en un valor de cadena no vacío, anule los valores de todos los demás
Variables de internacionalización.

LC_CTYPE Determinar la configuración regional para la interpretación de secuencias de bytes de datos de texto.
como caracteres (por ejemplo, de un solo byte en lugar de caracteres de varios bytes en
argumentos y archivos de entrada).

LC_MENSAJES
Determine la configuración regional que se debe utilizar para afectar el formato y el contenido de
mensajes de diagnóstico escritos en error estándar.

HACER BANDERAS
Esta variable se interpretará como una cadena de caracteres que representa una serie.
de caracteres de opción que se utilizarán como opciones predeterminadas. La implementación deberá
Acepte los dos formatos siguientes (pero no es necesario que los acepte cuando estén mezclados):

* Los caracteres son letras de opción sin el principio personajes o
separación utilizada en un para lograr línea de comando de utilidad.

* Los caracteres están formateados de manera similar a una parte del para lograr
línea de comando de utilidad: las opciones están precedidas por personajes y
-separado como se describe en el volumen de Definiciones Básicas de
POSIX.1-2008, Sección 12.2, Utilidad Sintaxis Líneas directrices. macro=propuesta de
También se pueden incluir operandos de definición de macros. La diferencia entre el
contenido de HACER BANDERAS y del para lograr la línea de comando de la utilidad es que el contenido
de la variable no se someterá a las expansiones de palabras (ver Sección
2.6, Palabra Expansiones) asociado con el análisis de los valores de la línea de comandos.

NLSPATH Determinar la ubicación de los catálogos de mensajes para el procesamiento de LC_MENSAJES.

DIRPROYECTO
Proporcione un directorio que se utilizará para buscar archivos SCCS que no se encuentran en el
directorio. En todos los casos siguientes, la búsqueda de archivos SCCS se realiza en
El directorio SCCS en el directorio identificado. Si el valor de DIRPROYECTO
comienza con un , se considerará un nombre de ruta absoluto; de lo contrario,
el valor de DIRPROYECTO se trata como un nombre de usuario y la inicial de ese usuario
El directorio de trabajo se examinará en busca de un subdirectorio. src or fuente. Si tal
se encuentra el directorio, se utilizará. De lo contrario, el valor se utiliza como relativo
nombre de ruta.

If DIRPROYECTO no está establecido o tiene un valor nulo, la búsqueda de archivos SCCS debe ser
hecho en el directorio SCCS en el directorio actual.

El entorno de DIRPROYECTO afecta a todos los archivos enumerados en el resto de este
descripción de la utilidad para archivos con un componente llamado SCCS.

El valor de la SHELL La variable de entorno no se utilizará como macro y no se
modificado definiendo el SHELL macro en un archivo MAKE o en la línea de comando. Todos los demás
Las variables de entorno, incluidas aquellas con valores nulos, se utilizarán como macros, como
definido en Macros.

ASINCRÓNICO EVENTOS


Si aún no se ha ignorado, para lograr atrapará SIGHUP, SIGTERM, SIGINT y SIGQUIT y eliminará
el objetivo actual a menos que el objetivo sea un directorio o el objetivo sea un requisito previo de la
objetivo especial .PRECIOSO o a menos que uno de los −norte, −pago −q se especificó opciones. Alguna
Los objetivos eliminados de esta manera se notificarán en mensajes de diagnóstico no especificados.
formato, escrito en error estándar. Después de este proceso de limpieza, si lo hay, para lograr tomará el
acción estándar para todas las demás señales.

SALIDA ESTÁNDAR


El para lograr La utilidad escribirá todos los comandos que se ejecutarán en la salida estándar a menos que −s
se especificó la opción, el comando tiene como prefijo un signo de arroba, o el objetivo especial
.SILENCIO tiene el objetivo actual como requisito previo o no tiene requisitos previos. Si para lograr
se invoca sin que sea necesario realizar ningún trabajo, debe escribir un mensaje en el estándar
salida que indica que no se tomó ninguna acción. Si el −t La opción está presente y un archivo
tocado, para lograr escribirá en la salida estándar un mensaje de formato no especificado indicando
que el archivo fue tocado, incluido el nombre de archivo del archivo.

ESTDERR


El error estándar se utilizará solo para mensajes de diagnóstico.

SALIDA ARCHIVOS


Los archivos se pueden crear cuando el −t la opción está presente. También se pueden crear archivos adicionales
por las utilidades invocadas por para lograr.

EXTENDIDO DESCRIPCIÓN


El para lograr La utilidad intenta realizar las acciones necesarias para garantizar que el
los objetivos están actualizados. Un objetivo se considera desactualizado si es más antiguo que cualquiera de sus
requisitos previos o si no existe. los para lograr La utilidad tratará todos los requisitos previos como
objetivos mismos y, de forma recursiva, se aseguran de que estén actualizados, procesándolos en el
orden en el que aparecen en la regla. los para lograr La utilidad utilizará los tiempos de modificación.
de archivos para determinar si los destinos correspondientes están desactualizados.

Después para lograr se ha asegurado de que todos los requisitos previos de un objetivo estén actualizados y si el
destino está desactualizado, se ejecutarán los comandos asociados con la entrada de destino. Si
no hay comandos listados para el objetivo, el objetivo se tratará como actualizado.

Makefile Sintaxis
Un archivo MAKE puede contener reglas, definiciones de macros (ver Macros), incluya líneas y comentarios.
Hay dos tipos de reglas: inferencia reglas y dirigidos reglas. para lograr la utilidad debe
contienen un conjunto de reglas de inferencia integradas. Si el −r la opción está presente, las reglas integradas
no se utilizará y se borrará la lista de sufijos. Las reglas adicionales de ambos tipos pueden
especificarse en un archivo MAKE. Si una regla se define más de una vez, el valor de la regla
será el del último especificado. Las macros también se pueden definir más de una vez, y
el valor de la macro se especifica en Macros. Los comentarios comienzan con un ('#')
y continuar hasta que no haya escapado es alcanzado.

De forma predeterminada, los siguientes archivos se probarán en secuencia: ./makefile y ./Makefile. Si
ninguno ./makefile or ./Makefile se encuentran, otros archivos definidos por la implementación también pueden ser
intentó. En sistemas compatibles con XSI, los archivos adicionales ./s.makefile, SCCS / s.makefile,
./s.Makefiley SCCS / s.Makefile también será juzgado.

El −f la opción debe dirigir para lograr para ignorar cualquiera de estos archivos predeterminados y usar el especificado
argumento como un archivo MAKE en su lugar. Si el '-' se especifica el argumento, la entrada estándar debe ser
usado.

El término makefile se utiliza para hacer referencia a las reglas proporcionadas por el usuario, ya sea en
./makefile o sus variantes, o especificado por el −f .

Las reglas de los archivos MAKE constarán de los siguientes tipos de líneas: reglas de destino,
incluyendo objetivos especiales (ver Target Reglas), reglas de inferencia (ver Inferencia Reglas), macro
definiciones (ver Macros), líneas vacías y comentarios.

Las reglas de destino e inferencia pueden contener comando líneas. Las líneas de comando pueden tener un prefijo
que se eliminará antes de la ejecución (ver Makefile Ejecución).

Cuando un escapó (uno precedido por un ) se encuentra en cualquier parte del
makefile excepto en una línea de comando, una línea de inclusión o una línea inmediatamente anterior a una
incluir línea, se reemplazará, junto con cualquier espacio en blanco inicial en el siguiente
línea, con un solo . Cuando un escapó se encuentra en una línea de comando en un
makefile, la línea de comando contendrá el , los y el siguiente
línea, excepto que el primer carácter de la línea siguiente no se incluirá si es un
. Cuando un escapó se encuentra en una línea de inclusión o en una línea inmediatamente
antes de una línea de inclusión, el comportamiento no está especificado.

Incluyendo Líneas
Si la palabra incluir aparece al principio de una línea y va seguido de uno o más
caracteres, la cadena formada por el resto de la línea se procesará como
sigue para producir un nombre de ruta:

* El final y cualquier comentario será descartado. Si la cadena resultante
contiene cualquier carácter de comillas dobles ('"') el comportamiento no está especificado.

* La cadena resultante se procesará para la expansión macro (ver Macros.

* Alguna personajes que aparecen después de la primera no se utilizará como
separadores para dividir la cadena macroexpandida en campos. No se especifica si
cualquier otro carácter de espacio en blanco también se utiliza como separador. No esta especificado
si la expansión del nombre de ruta (ver Sección 2.13, Patrón de Costura Coincidencia de Calificación) es también
realizado.

* Si el procesamiento de separadores y la expansión de nombre de ruta opcional dan como resultado cero
o dos o más campos no vacíos, el comportamiento no está especificado. Si resulta en uno
campo no vacío, ese campo se toma como el nombre de la ruta.

Si el nombre de la ruta no comienza con un "/" se tratará como relativo a la corriente
directorio de trabajo del proceso, no relativo al directorio que contiene el archivo MAKE.
Si el archivo no existe en esta ubicación, no se especifica si
se buscan directorios.

El contenido del archivo especificado por el nombre de la ruta se leerá y procesará como si
apareció en el archivo MAKE en lugar de la línea de inclusión. Si el archivo termina con un escape
el comportamiento no está especificado.

El archivo en sí mismo puede contener más líneas de inclusión. Las implementaciones deben soportar el anidamiento
de incluir archivos hasta una profundidad de al menos 16.

Makefile Ejecución
Las líneas de comando de Makefile se procesarán una a la vez.

Las líneas de comando de Makefile pueden tener uno o más de los siguientes prefijos: a ('-'),
un signo de arroba'@'), o un ('+'). Estos modificarán la forma en que para lograr
procesa el comando.

- Si el prefijo del comando contiene un , o la −yo la opción está presente, o la
objetivo especial .IGNORAR tiene el objetivo actual como requisito previo o no tiene
Como requisitos previos, se ignorará cualquier error encontrado durante la ejecución del comando.

@ Si el prefijo del comando contiene un signo arroba y el para lograr línea de comando de utilidad −norte
no se especifica la opción, o la −s la opción está presente, o el objetivo especial .SILENCIO
tiene el objetivo actual como requisito previo o no tiene requisitos previos, el comando
no se escribirá en la salida estándar antes de que se ejecute.

+ Si el prefijo del comando contiene un , esto indica una línea de comando makefile
que se ejecutará incluso si −norte, −qo −t está especificado.

An ejecución línea se construye desde la línea de comando eliminando cualquier carácter de prefijo. Excepto
como se describe bajo el prefijo at-sign, la línea de ejecución se escribirá en el estándar
salida, opcionalmente precedida por un . La línea de ejecución será luego ejecutada por un
shell como si se pasara como argumento a la te() interfaz, excepto que si
los errores no se ignoran, entonces el shell −e La opción también estará en vigor. Si hay errores
están siendo ignorados por el comando (como resultado de la −yo opción, una '-' prefijo de comando, o
a .IGNORAR objetivo especial), el caparazón −e opción no estará en vigor. El medio ambiente para
el comando que se está ejecutando debe contener todas las variables en el entorno de para lograr.

Por defecto, cuando para lograr recibe un estado distinto de cero de la ejecución de un comando, deberá
terminar con un mensaje de error al error estándar.

Target Reglas
Las reglas de destino tienen el siguiente formato:

dirigidos [dirigidos...]: [requisito previo...] [;comando]
[comando
comando
...]

línea esa no comenzar

Las entradas de destino se especifican mediante un -lista de objetivos no nula y separada, luego una
, Entonces un -Lista de requisitos previos separada, posiblemente vacía. Texto siguiendo un
, si los hay, y todas las líneas siguientes que comienzan con un , son el comando makefile
líneas que se ejecutarán para actualizar el objetivo. La primera línea no vacía que no comienza
con un o '#' comenzará una nueva entrada. Una línea vacía o en blanco, o una línea que comienza
'#', puede comenzar una nueva entrada.

Las aplicaciones seleccionarán nombres de destino del conjunto de caracteres que consta únicamente de
puntos, guiones bajos, dígitos y orden alfabético del conjunto de caracteres portátil (consulte la
Volumen de definiciones básicas de POSIX.1‐2008, Sección 6.1, Estuche de carga Caracter Set).
Las implementaciones pueden permitir otros caracteres en los nombres de destino como extensiones. los
interpretación de los objetivos que contienen los personajes '%' y '"' está definido por la implementación.

Un objetivo que tiene requisitos previos, pero no tiene ningún comando, se puede usar para agregar al
lista de requisitos previos para ese objetivo. Solo una regla de destino para un destino determinado puede contener
comandos.

Las líneas que comienzan con uno de los siguientes se denominan especial tiene como objetivo y controlar el
operación de para lograr:

.DEFECTO Si el archivo MAKE utiliza este destino especial, la aplicación se asegurará de que
se especifica con comandos, pero sin requisitos previos. Los mandatos serán
utilizado por para lograr si no hay otras reglas disponibles para construir un objetivo.

.IGNORAR Los requisitos previos de este objetivo especial son los objetivos mismos; esto causará
errores de los comandos asociados con ellos para ser ignorados de la misma manera que
especificado por el −yo opción. Apariciones posteriores de .IGNORAR se sumará a la
lista de objetivos ignorando errores de comando. Si no se especifican requisitos previos, para lograr
se comportará como si el −yo se ha especificado la opción y los errores de todos los comandos
asociados con todos los objetivos se ignorarán.

.POSIX La aplicación debe garantizar que este objetivo especial se especifique sin
prerrequisitos o comandos. Si aparece como la primera línea sin comentarios en el
archivo MAKE, para lograr procesará el archivo MAKE como se especifica en esta sección;
de lo contrario, el comportamiento de para lograr no está especificado.

.PRECIOSO Los requisitos previos de este objetivo especial no se eliminarán si para lograr recibe uno
de los eventos asincrónicos descritos explícitamente en los EVENTOS ASÍNCRONOS
sección. Apariciones posteriores de .PRECIOSO se agregará a la lista de preciosos
archivos. Si no se especifican prerrequisitos, todos los destinos en el archivo MAKE serán
tratado como si estuviera especificado con .PRECIOSO.

.SCCS_GET La aplicación debe garantizar que este objetivo especial se especifique sin
prerrequisitos. Si este objetivo especial está incluido en un archivo MAKE, los comandos
especificado con este objetivo reemplazará los comandos predeterminados asociados con
este objetivo especial (ver Predeterminado Reglas). Los comandos especificados con este
objetivo se utilizan para obtener todos los archivos SCCS que no se encuentran en el actual
directorio.

Cuando los archivos de origen se nombran en una lista de dependencias, para lograr los tratará justamente
como cualquier otro objetivo. Debido a que se presume que el archivo fuente está presente en el
directorio, no es necesario agregar una entrada para él al archivo MAKE. Cuando una
el destino no tiene dependencias, pero está presente en el directorio, para lograr asumirá
que ese archivo está actualizado. Sin embargo, si un archivo SCCS llamado SCCS / s.archivo fuente
se encuentra para un objetivo archivo fuente, para lograr compara la marca de tiempo del objetivo
archivo con el del SCCS / s.source_file para garantizar que el objetivo esté actualizado. Si
falta el objetivo, o si el archivo SCCS es más reciente, para lograr automáticamente
emitir los comandos especificados para el .SCCS_GET objetivo especial para recuperar el
versión más reciente. Sin embargo, si alguien puede escribir en el objetivo, para lograr deberá
no recuperar una nueva versión.

.SILENCIO Los requisitos previos de este objetivo especial son los objetivos mismos; esto causará
Los comandos asociados con ellos no deben escribirse en la salida estándar antes
se ejecutan. Apariciones posteriores de .SILENCIO se agregará a la lista de
objetivos con comandos silenciosos. Si no se especifican requisitos previos, para lograr deberá
comportarse como si el −s Se ha especificado la opción y no hay comandos ni mensajes táctiles.
asociado con cualquier objetivo se escribirá en la salida estándar.

.SUFIJOS Requisitos previos de .SUFIJOS se agregará a la lista de sufijos conocidos y
se utilizan junto con las reglas de inferencia (ver Inferencia Reglas) Si
.SUFIJOS no tiene ningún requisito previo, la lista de sufijos conocidos será
liquidado.

Los objetivos especiales .IGNORAR, .POSIX, .PRECIOSO, .SILENCIOy .SUFIJOS se especificará
sin comandos.

Objetivos con nombres que constan de un encabezado seguido de las letras mayúsculas
"POSIX" y luego cualquier otro carácter se reserva para una futura estandarización. Objetivos
con nombres que consisten en un encabezado seguido de una o más letras mayúsculas son
reservado para extensiones de implementación.

Macros
Las definiciones de macros tienen la forma:

string1 = [string2]

La macro nombrada string1 se define como tener el valor de string2, Donde string2 is
definido como todos los caracteres, si los hay, después de la , hasta un carácter de comentario
('#') o un no escapado . Alguna caracteres inmediatamente antes o después de la
será ignorado.

Las aplicaciones seleccionarán nombres de macros del conjunto de caracteres que consta únicamente de
puntos, guiones bajos, dígitos y orden alfabético del conjunto de caracteres portátil (consulte la
Volumen de definiciones básicas de POSIX.1‐2008, Sección 6.1, Estuche de carga Caracter Set). Una macro
el nombre no debe contener un . Las implementaciones pueden permitir a otros personajes en
nombres de macros como extensiones.

Las macros pueden aparecer en cualquier lugar del archivo MAKE. Expansiones de macros usando las formas $ (string1) o
${string1} se sustituirá por string2, como sigue:

* Las macros en las líneas de destino se evaluarán cuando se lea la línea de destino.

* Las macros en las líneas de comando de archivos MAKE se evaluarán cuando se ejecute el comando.

* Macros en la cadena antes del en una macrodefinición se evaluará
cuando se realiza la asignación de macro.

* Macros después de en una macrodefinición no se evaluará hasta que el
macro definida se utiliza en una regla o comando, o antes de la en una macro
definición.

Los paréntesis o llaves son opcionales si string1 es un solo carácter. La macro $$
será reemplazado por el carácter único PS. Si string1 en una macroexpansión contiene un
macro expansión, los resultados no están especificados.

Expansiones de macros usando las formas $ (string1[:subst1=[subst2]]) o
${string1[:subst1=[subst2]]} se puede utilizar para reemplazar todas las apariciones de subst1 subst2
cuando se realiza la macro sustitución. los subst1 para ser reemplazado será reconocido
cuando es un sufijo al final de una palabra en string1 (donde un por el temor , en este contexto, es
definido como una cadena delimitada por el comienzo de la línea, un o un ).
If string1 en una macro expansión contiene una macro expansión, los resultados no se especifican.

Macro expansiones en string1 de las líneas de definición de macro se evaluarán cuando se lean. Macro
expansiones en string2 de líneas de definición macro se ejecutará cuando la macro
identificado por string1 se expande en una regla o comando.

Las macrodefiniciones se tomarán de las siguientes fuentes, en la siguiente lógica
orden, antes de que se lean los archivos MAKE.

1. Macros especificadas en el para lograr línea de comando de la utilidad, en el orden especificado en el
línea de comando. No se especifica si las macros internas definidas en Interno Macros
se aceptan de esta fuente.

2. Macros definidas por el HACER BANDERAS variable de entorno, en el orden especificado en la
Variable ambiental. No se especifica si las macros internas definidas en
Interno Macros se aceptan de esta fuente.

3. El contenido del medio ambiente, excluyendo el HACER BANDERAS y SHELL variables y
incluyendo las variables con valores nulos.

4. Macros definidas en las reglas de inferencia integradas en para lograr.

Las macrodefiniciones de estas fuentes no anularán las macrodefiniciones de un nivel inferior.
fuente numerada. Definiciones de macros de una sola fuente (por ejemplo, el para lograr utilidad
línea de comando, el HACER BANDERAS variable de entorno, o las otras variables de entorno)
anulará las definiciones de macro anteriores de la misma fuente.

Las macros definidas en los archivos MAKE prevalecerán sobre las definiciones de macros que se produzcan antes de ellas.
en los archivos MAKE y las definiciones de macros de la fuente 4. Si el −e la opción no está especificada,
las macros definidas en los archivos MAKE prevalecerán sobre las definiciones de macros de la fuente 3. Macros
definido en los archivos MAKE (s) no anulará las definiciones de macro de la fuente 1 o la fuente 2.

Antes de que se lean los archivos MAKE, todos los para lograr opciones de la línea de comando de la utilidad (excepto −f
y −pag) y para lograr definiciones de macros de línea de comando de utilidad (excepto cualquiera para el HACER BANDERAS
macro), aún no incluido en el HACER BANDERAS macro, se agregará a la HACER BANDERAS
macro, citado de una manera definida por la implementación de modo que cuando HACER BANDERAS es leído por
otra instancia del para lograr comando, se recupera el valor de la macro original. Otro
Las opciones y macros definidas por la implementación también se pueden agregar al HACER BANDERAS macro. Si
esto modifica el valor de la HACER BANDERAS macro, o, si el HACER BANDERAS la macro se modifica en
en cualquier momento posterior, el HACER BANDERAS La variable de entorno se modificará para que coincida con la nueva
valor de la HACER BANDERAS macro. El resultado de establecer HACER BANDERAS en el Makefile es
sin especificar.

Antes de que se lean los archivos MAKE, todos los para lograr definiciones de macros de línea de comando de utilidad
(excepto el HACER BANDERAS macro o la SHELL macro) se añadirán al entorno de para lograr.
También se pueden agregar otras variables definidas por la implementación al entorno de para lograr.

El SHELL macro se tratará de forma especial. Será proporcionado por para lograr y establezca el
nombre de ruta del intérprete del lenguaje de comandos de shell (ver sh). La SHELL entorno
variable no afectará el valor de la SHELL macro. Si SHELL se define en el
makefile o se especifica en la línea de comando, reemplazará el valor original del
SHELL macro, pero no afectará a la SHELL Variable ambiental. Otros efectos de
definir SHELL en el archivo MAKE o en la línea de comando están definidos por la implementación.

Inferencia Reglas
Las reglas de inferencia tienen el siguiente formato:

dirigidos:
comando
[comando]
...

línea esa no comenzar or #

La solicitud garantizará que el dirigidos parte es un nombre de destino válido (ver Target
Reglas) de la forma .s2 or .s1.s2 (dónde .s1 y .s2 son sufijos que se han dado como
prerrequisitos de la .SUFIJOS objetivo especial y s1 y s2 no contienen ninguno o
caracteres.) Si solo hay uno en el destino, es un sufijo único
regla de inferencia. Los objetivos con dos puntos son reglas de inferencia de sufijo doble. Inferencia
Las reglas solo pueden tener un objetivo antes de .

La aplicación debe garantizar que el archivo MAKE no especifique los requisitos previos para
reglas de inferencia; ningún carácter que no sea el espacio en blanco debe seguir el en el
primera línea, excepto al crear el vacío regla, descrito abajo. Los requisitos previos son
inferido, como se describe a continuación.

Las reglas de inferencia se pueden redefinir. Un objetivo que coincide con una regla de inferencia existente deberá
sobrescriba la antigua regla de inferencia. Se puede crear una regla vacía con un comando que consta de
de simplemente un (es decir, la regla todavía existe y se encuentra durante la regla de inferencia
búsqueda, pero como está vacío, la ejecución no tiene ningún efecto). La regla vacía también puede ser
formateado de la siguiente manera:

gobernar:;

donde cero o más los personajes separan el y .

El para lograr La utilidad utiliza los sufijos de los objetivos y sus prerrequisitos para inferir cómo un
el objetivo se puede actualizar. Una lista de reglas de inferencia define los comandos a ser
ejecutado. Por defecto, para lograr contiene un conjunto integrado de reglas de inferencia. Reglas adicionales
se puede especificar en el archivo MAKE.

El objetivo especial .SUFIJOS contiene como prerrequisitos una lista de sufijos que
ser utilizado por las reglas de inferencia. El orden en el que se especifican los sufijos define el
orden en el que se utilizan las reglas de inferencia para los sufijos. Los nuevos sufijos serán
anexado a la lista actual especificando un .SUFIJOS objetivo especial en el archivo MAKE. A
.SUFIJOS el destino sin requisitos previos borrará la lista de sufijos. Un vacío
.SUFIJOS objetivo seguido de un nuevo .SUFIJOS La lista es necesaria para cambiar el orden de la
sufijos

Normalmente, el usuario proporcionaría una regla de inferencia para cada sufijo. La regla de inferencia para
actualizar un objetivo con un sufijo .s1 de un requisito previo con un sufijo .s2 se especifica como un
dirigidos .s2.s1. Las macros internas proporcionan los medios para especificar reglas generales de inferencia.
(consulta: Interno Macros).

Cuando no se encuentra una regla de objetivo para actualizar un objetivo, se comprobarán las reglas de inferencia. los
sufijo del objetivo.s1) a construir se compara con la lista de sufijos especificada por
las .SUFIJOS objetivos especiales. Si el .s1 el sufijo se encuentra en .SUFIJOS, la inferencia
Las reglas se buscarán en el orden definido para la primera .s2.s1 regla cuyo prerrequisito
archivo ($ *. s2) existe. Si el objetivo está desactualizado con respecto a este requisito previo, el
Se ejecutarán los comandos para esa regla de inferencia.

Si el objetivo que se va a construir no contiene un sufijo y no hay una regla para el objetivo,
Se comprobarán las reglas de inferencia de sufijo único. Las reglas de inferencia de sufijo único
definir cómo construir un objetivo si se encuentra un archivo con un nombre que coincide con el nombre del objetivo
con uno de los sufijos únicos adjuntos. Una regla con un sufijo .s2 es la definición de
cómo construir dirigidos Desde objetivo.s2. El otro sufijo (.s1) se trata como nulo.

A ('~') en las reglas anteriores se refiere a un archivo SCCS en el directorio actual. Por lo tanto,
la regla .c ~ .o transformaría un archivo fuente en lenguaje C de SCCS en un archivo objeto (.o).
Debido a que el s. de los archivos SCCS es un prefijo, es incompatible con para lograrpunto de sufijo
de vista. Por lo tanto, la '~' es una forma de cambiar cualquier referencia de archivo a un archivo SCCS
referencia.

Bibliotecas
Si un objetivo o prerrequisito contiene paréntesis, se tratará como miembro de un
biblioteca de archivos. Para el lib(miembro.o) expresión lib se refiere al nombre del archivo
biblioteca y miembro.o al nombre del miembro. La solicitud garantizará que el miembro esté
un archivo de objeto con el .o sufijo. El tiempo de modificación de la expresión es el
hora de modificación para el miembro que se guarda en la biblioteca de archivos; ver ar. .a sufijo
se referirá a una biblioteca de archivos. los .s2.a La regla se utilizará para actualizar a un miembro en el
biblioteca de un archivo con un sufijo .s2.

Interno Macros
El para lograr La utilidad debe mantener cinco macros internas que se pueden utilizar en destino y
reglas de inferencia. Para definir claramente el significado de estas macros, algunos
aclaración de los términos dirigidos gobernar, inferencia gobernar, dirigidosy requisito previo is
necesario.

El usuario especifica las reglas de destino en un archivo MAKE para un destino en particular. Inferencia
las reglas son especificadas por el usuario o para lograr-reglas especificadas para una clase particular de nombre de destino.
Los requisitos previos explícitos son los requisitos previos especificados en un archivo MAKE en las líneas de destino.
Los prerrequisitos implícitos son aquellos prerrequisitos que se generan cuando las reglas de inferencia son
usó. Las reglas de inferencia se aplican a requisitos previos implícitos o a requisitos previos explícitos
que no tienen reglas de destino definidas para ellos en el archivo MAKE. Se aplican las reglas de destino
a los destinos especificados en el archivo MAKE.

Antes de que se actualice cualquier destino en el archivo MAKE, cada uno de sus requisitos previos (tanto explícitos como
implícito) se actualizará. Esto se logrará procesando recursivamente cada
requisito previo. Tras la recursividad, cada requisito previo se convertirá en un objetivo en sí mismo. Su
Los requisitos previos, a su vez, se procesarán de forma recursiva hasta que se encuentre un objetivo que no tiene
requisitos previos, momento en el que se detiene la recursividad. La recursividad luego retrocederá,
actualizando cada objetivo a medida que avanza.

En las definiciones que siguen, la palabra dirigidos se refiere a uno de:

* Un objetivo especificado en el archivo MAKE

* Un prerrequisito explícito especificado en el archivo MAKE que se convierte en el objetivo cuando para lograr
lo procesa durante la recursividad

* Un prerrequisito implícito que se convierte en un objetivo cuando para lograr lo procesa durante la recursividad

En las definiciones que siguen, la palabra requisito previo se refiere a uno de los siguientes:

* Un requisito previo explícito especificado en el archivo MAKE para un objetivo en particular

* Un prerrequisito implícito generado como resultado de localizar una inferencia apropiada
regla y archivo correspondiente que coincide con el sufijo del objetivo

Las cinco macros internas son:

$ @ El $ @ evaluará el nombre completo del objetivo del objetivo actual, o el
nombre de archivo de archivo parte de un destino de archivo de biblioteca. Se evaluará tanto para
reglas de destino e inferencia.

Por ejemplo, en el .California regla de inferencia, $ @ representa el desactualizado .a presentar a la
ser construido. Del mismo modo, en una regla de destino Makefile para construir lib.a Desde archivo.cPS
representa el desactualizado lib.a.

$% La macro $% se evaluará solo cuando el objetivo actual sea una biblioteca de archivo
miembro del formulario nombrelib(miembro.o). En estos casos, $ @ evaluará a
nombrelib y $% evaluará a miembro.o. La macro $% se evaluará para
tanto el objetivo como las reglas de inferencia.

Por ejemplo, en una regla de destino de archivo MAKE para construir lib.a(archivo.o), $% representa
archivo.o, a diferencia de $ @, que representa lib.a.

PS El $? macro se evaluará a la lista de requisitos previos que son más nuevos que el
objetivo actual. Se evaluará tanto para las reglas de destino como para las de inferencia.

Por ejemplo, en una regla de destino de archivo MAKE para construir prog Desde archivo1.o, archivo2.oy
archivo3.o, y donde prog no está desactualizado con respecto a archivo1.o, pero está fuera de
fecha con respecto a archivo2.o y archivo3.oPS representa archivo2.o y archivo3.o.

$ <En una regla de inferencia, la macro $ <evaluará el nombre de archivo cuya existencia
permitió que se eligiera la regla de inferencia para el objetivo. En el .DEFECTO regla, la
$ <macro evaluará el nombre del objetivo actual. El significado de la macro $ <
no se especificará de otro modo.

Por ejemplo, en el .California regla de inferencia, $ <representa el requisito previo .c archivo.

$ * La macro $ * evaluará el nombre del objetivo actual con su sufijo eliminado. Eso
se evaluará al menos para las reglas de inferencia.

Por ejemplo, en el .California regla de inferencia, $ *. o representa el desactualizado .o presentar
que corresponde al prerrequisito .c archivo.

Cada una de las macros internas tiene una forma alternativa. Cuando una mayúscula 'RE' or 'F' is
adjunto a cualquiera de las macros, el significado se cambiará al directorio parte para 'RE'
y nombre de archivo parte para 'F'. La parte del directorio es el prefijo de la ruta del archivo sin un
arrastrando ; para el directorio actual, la parte del directorio es '.'. Cuando el $? macro
contiene más de un nombre de archivo de requisito previo, $ (? D) y $ (? F) (o $ {? D} y $ {? F})
las macros se expanden a una lista de partes de nombre de directorio y partes de nombre de archivo, respectivamente.

Para el objetivo lib(miembro.o) y el s2.a regla, las macros internas se definirán como:

$< miembro.s2

$* miembro

$@ lib

$? miembro.s2

$% miembro.o

Predeterminado Reglas
Las reglas predeterminadas para para lograr debe lograr resultados que son los mismos que si el siguiente
fueron usados. Implementaciones que no son compatibles con las utilidades de desarrollo del lenguaje C
la opción puede omitir CC, FLANDERAS, YACC, BANDERAS Y, LEX, FLAGS, LDFBANDERAS, y la .c, .yy .l
reglas de inferencia. Las implementaciones que no son compatibles con FORTRAN pueden omitir FC, BANDERAS, y la
.f reglas de inferencia. Las implementaciones pueden proporcionar macros y reglas adicionales.

SPECIAL OBJETIVOS

.SCCS_GET: sccs $ (SCCSFLAGS) obtener $ (SCCSGETFLAGS) $ @

.SUFIJOS: .o .c .y .l .a .sh .f .c ~ .y ~ .l ~ .sh ~ .f ~

MACROS

HACER = hacer
AR = ar
ARFLAGS = −rv
YACC = yacc
YFLAGS =
LEX = lex
LFLAGS =
LDFLAGS =
CC = c99
CFLAGS = −O
FC = fort77
FFLAGS = −O 1
OBTENER = conseguir
GFLAGS =
SCCSFLAGS =
SCCSGETFLAGS = −s

SOLTERO SUFIJO REGLAS

.C:
$ (CC) $ (CFLAGS) $ (LDFLAGS) −o $ @ $

.F:
$ (FC) $ (FFLAGS) $ (LDFLAGS) −o $ @ $

.sh:
cp $ <$ @
chmod a + x $ @

.c ~:
$ (OBTENER) $ (GFLAGS) −p $ <> $ *. C
$ (CC) $ (CFLAGS) $ (LDFLAGS) −o $ @ $ *. C

.f ~:
$ (OBTENER) $ (GFLAGS) −p $ <> $ *. F
$ (FC) $ (FFLAGS) $ (LDFLAGS) −o $ @ $ *. F

.sh ~:
$ (OBTENER) $ (GFLAGS) −p $ <> $ *. Sh
cp $ *. sh $ @
chmod a + x $ @

DOBLE SUFIJO REGLAS

.co:
$ (CC) $ (CFLAGS) −c $

.fo:
$ (FC) $ (FFLAGS) −c $

.yo:
$ (YACC) $ (YFLAGS) $
$ (CC) $ (CFLAGS) −c y.tab.c
rm −f y.tab.c
mv y.tab.o $ @

.lo:
$ (LEX) $ (LFLAGS) $
$ (CC) $ (CFLAGS) −c lex.yy.c
rm −f lex.yy.c
mv lex.yy.o $ @

.yc:
$ (YACC) $ (YFLAGS) $
mv y.tab.c $ @

.lc:
$ (LEX) $ (LFLAGS) $
mv lex.yy.c $ @

.c ~ .o:
$ (OBTENER) $ (GFLAGS) −p $ <> $ *. C
$ (CC) $ (CFLAGS) −c $ *. C

.f ~ .o:
$ (OBTENER) $ (GFLAGS) −p $ <> $ *. F
$ (FC) $ (FFLAGS) −c $ *. F

.y ~ .o:
$ (OBTENER) $ (GFLAGS) −p $ <> $ *. Y
$ (YACC) $ (YFLAGS) $ *. Y
$ (CC) $ (CFLAGS) −c y.tab.c
rm −f y.tab.c
mv y.tab.o $ @

.l ~ .o:
$ (OBTENER) $ (GFLAGS) −p $ <> $ *. L
$ (LEX) $ (LFLAGS) $ *. L
$ (CC) $ (CFLAGS) −c lex.yy.c
rm −f lex.yy.c
mv lex.yy.o $ @

.y ~ .c:
$ (OBTENER) $ (GFLAGS) −p $ <> $ *. Y
$ (YACC) $ (YFLAGS) $ *. Y
mv y.tab.c $ @

.l ~ .c:
$ (OBTENER) $ (GFLAGS) −p $ <> $ *. L
$ (LEX) $ (LFLAGS) $ *. L
mv lex.yy.c $ @

.California:
$ (CC) −c $ (CFLAGS) $
$ (AR) $ (ARFLAGS) $ @ $ *. O
rm −f $ *. o

.fa:
$ (FC) −c $ (FFLAGS) $
$ (AR) $ (ARFLAGS) $ @ $ *. O
rm −f $ *. o

SALIR ESTADO


Cuando el −q se especifica la opción, la para lograr La utilidad saldrá con uno de los siguientes
valores:

0 Finalización satisfactoria.

1 El objetivo no estaba actualizado.

> 1 Ocurrió un error.

Cuando el −q opción no está especificada, la para lograr La utilidad saldrá con uno de los siguientes
valores:

0 Finalización satisfactoria.

> 0 Ocurrió un error.

CONSECUENCIAS OF ERRORES


Por defecto.

El siguiendo (secciones) en informativo.

SOLICITUD USO


Si hay un archivo fuente (como ./fuente.c) y hay dos archivos SCCS correspondientes
a eso./s.fuente.c y ./SCCS/s.fuente.c), en sistemas compatibles con XSI para lograr utiliza el SCCS
archivo en el directorio actual. Sin embargo, se recomienda a los usuarios que utilicen el SCCS subyacente.
utilidadesAdmin, delta, obtener, y así sucesivamente) o el scc utilidad para todos los archivos fuente en un
directorio dado. Si ambos formularios se utilizan para un archivo fuente determinado, los futuros desarrolladores
muy probablemente confundido.

Incumbe a los archivos MAKE portátiles especificar el .POSIX objetivo especial con el fin de
garantizar que no se vean afectados por las extensiones locales.

El −k y −S ambas opciones están presentes para que la relación entre la línea de comando,
las HACER BANDERAS variable, y el archivo MAKE se puede controlar con precisión. Si el k bandera es
aprobada en HACER BANDERAS y un comando tiene la forma:

$ (HACER) −S foo

luego se restaura el comportamiento predeterminado para el niño para lograr.

Cuando el −norte se especifica la opción, siempre se agrega a HACER BANDERAS. Esto permite un recursivo
para lograr −norte dirigidos que se utilizará para ver todas las acciones que se tomarían para actualizar dirigidos.

Debido a la práctica histórica generalizada, interpretar un ('#') dentro de una
variable como el comienzo de un comentario tiene el desafortunado efecto secundario de hacer que sea imposible
para colocar un en una variable, prohibiendo así algo como:

FLANDERAS = "−D COMMENT_CHAR = '#' "

Muchos historicos para lograr Las utilidades dejan de encadenar las reglas de inferencia cuando un intermedio
el objetivo es inexistente. Por ejemplo, podría ser posible que para lograr para determinar que ambos
.yc y .co podría usarse para convertir un .y a una .o. En cambio, en este caso, para lograr requiere
el uso de un .yo regla.

La mejor manera de proporcionar archivos MAKE portátiles es incluir todas las reglas necesarias en el
makefile en sí. Las reglas proporcionadas utilizan solo funciones proporcionadas por otras partes de este
volumen de POSIX.1‐2008. Las reglas predeterminadas incluyen reglas para comandos opcionales en este
volumen de POSIX.1‐2008. Solo se necesitan reglas pertenecientes a los comandos que se proporcionan en
el conjunto predeterminado de una implementación.

Las macros utilizadas en otras macros se evalúan cuando se utiliza la nueva macro en lugar de cuando
la nueva macro está definida. Por lo tanto:

MACRO = valor1
NUEVO = $ (MACRO)
MACRO = valor2

objetivo:
echo $ (NUEVO)

produciría valor2 y no valor1 desde NUEVO no se expandió hasta que fue necesario en el
echo línea de comando.

Se sabe que algunas aplicaciones históricas se entremezclan nombre_objetivo y macro = nombre
operandos en la línea de comando, esperando que todas las macros se procesen antes que cualquiera de
se tratan los objetivos. Las aplicaciones conformes no hacen esto, aunque algunas
El soporte de compatibilidad con versiones anteriores puede incluirse en algunas implementaciones.

Los siguientes caracteres en los nombres de archivo pueden causar problemas: '=', ':', '' ', comillas simples y
'@'. Incluya nombres de archivo, caracteres de coincidencia de patrones y '"' también debe evitarse, ya que
algunas implementaciones pueden tratarlos como especiales.

Para las reglas de inferencia, la descripción de $ <y $? parecen similares. Sin embargo, un ejemplo muestra
la menor diferencia. En un archivo MAKE que contiene:

foo.o: foo.h

if foo.h es más nuevo que foo.o, Todavía foo.c es más viejo que foo.o, la regla incorporada para hacer
foo.o Desde foo.c se utiliza, con $ <igual a foo.c y $? igual a foo.h. Si foo.c También es
mas nuevo que foo.o, $ <es igual a foo.c y $? es igual a foo.h foo.c.

EJEMPLOS


1. El siguiente comando:

para lograr

hace el primer objetivo encontrado en el archivo MAKE.

2. El siguiente comando:

para lograr basura

hace el objetivo basura.

3. El siguiente archivo MAKE dice que pgm depende de dos archivos, ao y boy que ellos
a su vez dependen de sus archivos fuente correspondientes (C.A y bc) y un archivo común
incl. h:

programa: ao bo
c99 ao bo −o pgm
ao: incl. h C.A
c99 −c C.A
bo: incl. h bc
c99 −c bc

4. Un ejemplo para optimizar .o archivos de .c archivos es:

.co:
c99 −c −O $ *. c

o bien:

.co:
c99 −c −O $<

5. A continuación, se muestra el uso más común de la interfaz de archivo. Aquí, se supone que el
Los archivos de origen son todos fuente en lenguaje C:

liberación: lib (archivo1.o) lib (archivo2.o) lib (archivo3.o)
@ Echo lib is ahora hasta a la fecha

El .California la regla se usa para hacer archivo1.o, archivo2.oy archivo3.o e insértelos en lib.

El trato de los fugitivos Los personajes en todo el archivo MAKE son históricos.
práctica. Por ejemplo, la regla de inferencia:

.co\
:

funciona, y la macro:

f= de caramelos baz \
biz
a:
echo == $ f ==

ecos "== barra baz biz == ".

Si $? fueron:

/usr/include/stdio.h /usr/include/unistd.h foo.h

entonces $ (? D) sería:

/ usr / include / usr / include .

y $ (? F) sería:

estudio h unistd.h foo.h

6. El contenido de las reglas integradas se puede ver ejecutando:

para lograr −pag −f / dev / null 2> / dev / null

RAZÓN FUNDAMENTAL


El para lograr La utilidad descrita en este volumen de POSIX.1‐2008 está destinada a proporcionar los medios
para cambiar el código fuente portátil en ejecutables que se pueden ejecutar en un
Sistema conforme a POSIX.1‐2008. Refleja las características más comunes presentes en System V
y BSD para logrars.

Históricamente, la para lograr La utilidad ha sido un terreno especialmente fértil para proveedores y
modificaciones y extensiones de sintaxis específicas de la organización de investigación. Ejemplos incluyen:

* Sintaxis que admite la ejecución paralela (como de varios proveedores de multiprocesadores,
GNU y otros)

* `` Operadores '' adicionales que separan los objetivos y sus requisitos previos (Sistema V, BSD,
y otros)

* Especificando que las líneas de comando que contienen las cadenas "$ {MAKE}" y "$ (HACER)" en
ejecutado cuando el −norte se especifica la opción (GNU y System V)

* Modificaciones del significado de macros internas al hacer referencia a bibliotecas (BSD y
otros)

* Usando una sola instancia del shell para todas las líneas de comando del objetivo (BSD
y otros)

* Permitiendo personajes así como caracteres para delimitar líneas de comando (BSD)

* Agregar construcciones de estilo preprocesador C `` include '' e `` ifdef '' (System V, GNU, BSD,
y otros)

* Ejecución remota de líneas de comando (Sprite y otros)

* Especificación de objetivos especiales adicionales (BSD, System V y la mayoría de los demás)

Además, muchos proveedores y organizaciones de investigación han repensado los conceptos básicos de
para lograr, creando sintaxis enormemente ampliadas, así como completamente nuevas. Cada uno de estos
versiones de para lograr satisface las necesidades de una comunidad diferente de usuarios; es irrazonable
para que este volumen de POSIX.1‐2008 requiera un comportamiento que sería incompatible (y
probablemente inferior) a la práctica histórica para tal comunidad.

En circunstancias similares, cuando la industria tiene suficientes formatos suficientemente incompatibles
para hacerlos irreconciliables, este volumen de POSIX.1‐2008 ha seguido uno o ambos de
dos cursos de acción. Se ha cambiado el nombre de los comandos (cksum, echoy pax) y / o comando
Se han proporcionado opciones de línea para seleccionar el comportamiento deseado (grep, ody pax).

Debido a que la sintaxis especificada para el para lograr La utilidad es, en general, un subconjunto del
sintaxis aceptadas por casi todas las versiones de para lograr, se decidió que sería contrario
productivo para cambiar el nombre. Y dado que el archivo MAKE en sí es una unidad básica de
portabilidad, no sería completamente efectivo reservar una nueva carta de opción, como
para lograr −P, para lograr el comportamiento portátil. Por lo tanto, el objetivo especial .POSIX fue añadido
al archivo MAKE, lo que permite a los usuarios especificar un comportamiento `` estándar ''. Este objetivo especial no
no excluir extensiones en el para lograr utilidad, ni impide que tales extensiones sean
utilizado por el archivo MAKE que especifica el destino; Sin embargo, excluye cualquier extensión de
siendo aplicado que podría alterar el comportamiento de sintaxis previamente válida; tales extensiones
debe controlarse a través de opciones de línea de comando o nuevos objetivos especiales. Es de su incumbencia
archivos MAKE portátiles para especificar el .POSIX objetivo especial para garantizar que
no se ven afectados por las extensiones locales.

La versión portátil de para lograr descrito en esta página de referencia no pretende ser el
herramienta de generación de software de última generación y, como tal, algunas más nuevas y de vanguardia
no se han incluido funciones. Se ha intentado describir el portátil
makefile de una manera que no excluya tales extensiones siempre que no molesten
el comportamiento portátil descrito aquí.

Cuando el −norte se especifica la opción, siempre se agrega a HACER BANDERAS. Esto permite un recursivo
para lograr −norte dirigidos que se utilizará para ver todas las acciones que se tomarían para actualizar dirigidos.

La definición de HACER BANDERAS permite tanto la cadena de letras del Sistema V como el comando BSD
formatos de línea. Los dos formatos son lo suficientemente diferentes para permitir implementaciones para
Apoyar a ambos sin ambigüedad.

Las primeras propuestas declararon que un `` no citado '' fue tratado como el comienzo de una
comentario. los para lograr La utilidad no presta atención a las cotizaciones. A comienza un
comentar independientemente de su entorno.

El texto sobre `` otros nombres de ruta definidos por la implementación también se pueden probar '' además de
./makefile y ./Makefile es permitir extensiones como SCCS / s.Makefile así como de otros
variaciones. Se convirtió en un requisito definido por la implementación (a diferencia de los no especificados).
comportamiento) para resaltar implementaciones sorprendentes que podrían seleccionar algo inesperado
como / etc / Makefile. Los sistemas compatibles con XSI también intentan ./s.makefile, SCCS / s.makefile,
./s.Makefiley SCCS / s.Makefile.

Las primeras propuestas contenían la macro NPROC como un medio para especificar que para lograr debe usar n
procesos para realizar el trabajo requerido. Si bien esta función es una extensión valiosa para muchos
sistemas, no es de uso común y podría requerir otras extensiones no triviales para makefile
sintaxis. Esta extensión no es requerida por este volumen de POSIX.1‐2008, pero podría ser
proporcionado como una extensión compatible. La macro PARALELA es utilizado por algunos sistemas históricos
esencialmente con el mismo significado (pero sin usar un nombre que sea un límite común del sistema
valor). Se sugiere que los implementadores reconozcan el uso existente de NPROC y/o
PARALELA como extensiones a para lograr.

Las reglas predeterminadas se basan en el Sistema V. CC = Valor es c99 en lugar de cc
porque este volumen de POSIX.1‐2008 no estandariza la utilidad denominada cc. Así,
cada aplicación conforme sería necesaria para definir CC =c99 esperar correr. Hay
ninguna ventaja conferida por la esperanza de que el archivo MAKE pueda llegar al compilador `` preferido ''
porque no se puede garantizar que esto funcione. Además, dado que el makescript portátil solo puede
utilizar el c99 opciones, no se confiere ninguna ventaja en términos de lo que puede hacer el script. Está
un problema de calidad de implementación en cuanto a si c99 es tan valioso como cc.

El −d opción de para lograr se utiliza con frecuencia para producir información de depuración, pero es demasiado
definida por la implementación para agregar a este volumen de POSIX.1‐2008.

El −pag la opción no se pasa en HACER BANDERAS en la mayoría de las implementaciones históricas y para cambiar
esto provocaría la rotura de muchas implementaciones sin una portabilidad suficientemente incrementada.

Comandos que empiezan por a ('+') se ejecutan incluso si el −norte opción es
regalo. Basado en la versión GNU de para lograr, el comportamiento de −norte cuando el prefijo
se ha encontrado se ha ampliado para aplicar a −q y −t así como. Sin embargo, el System V
convención de forzar la ejecución del comando con −norte cuando la línea de comando de un objetivo contiene
cualquiera de las cuerdas "$ (HACER)" or "$ {MAKE}" no ha sido adoptado. Esta funcionalidad
aparecieron en las primeras propuestas, pero el peligro de este enfoque se señaló con el
siguiente ejemplo de una parte de un archivo MAKE:

subdirectorio:
cd subdirectorio; rm todos los archivos; $ (HACER)

La pérdida del comportamiento del Sistema V en este caso está bien equilibrada por la seguridad que se brinda a
otros archivos MAKE que no estaban al tanto de esta situación. En cualquier caso, la línea de comando
El prefijo puede proporcionar la funcionalidad deseada.

El doble en el formato de regla de destino es compatible con los sistemas BSD para permitir más
de una línea de destino que contiene el mismo nombre de destino para tener comandos asociados.
Dado que esta no es una funcionalidad descrita en el SVID o XPG3, se ha permitido como
extensión, pero no obligatoria.

Las reglas predeterminadas se proporcionan con texto que especifica que las reglas integradas serán las
lo mismo que si se utilizara el conjunto de la lista. La intención es que las implementaciones puedan
usar las reglas sin cambios, pero se le permitirá modificarlas de manera que no afecten
el comportamiento principal.

La mejor manera de proporcionar archivos MAKE portátiles es incluir todas las reglas necesarias en el
makefile en sí. Las reglas proporcionadas utilizan solo funciones proporcionadas por otras partes de este
volumen de POSIX.1‐2008. Las reglas predeterminadas incluyen reglas para comandos opcionales en este
volumen de POSIX.1‐2008. Solo se necesitan reglas pertenecientes a los comandos que se proporcionan en
el conjunto predeterminado de una implementación.

Un punto de discusión fue si eliminar la lista de reglas predeterminadas de este volumen de
POSIX.1‐2008. Proporcionan conveniencia, pero no mejoran la portabilidad de las aplicaciones.
El principal beneficio es la portabilidad de los usuarios que desean escribir para lograr comando y tener el
comando construir a partir de un comando.c archivo.

El historico CONCHA se omitió la característica. En algunas implementaciones se utiliza para dejar un
el usuario anula el shell que se utilizará para ejecutar para lograr comandos. Esto fue confuso; para
portátil para lograr, el shell debe ser elegido por el escritor del archivo MAKE o especificado en el para lograr
línea de comando y no por un usuario que ejecuta para lograr.

El para lograr Las utilidades en la mayoría de las implementaciones históricas procesan los requisitos previos de una
target en orden de izquierda a derecha, y el formato de archivo Make lo requiere. Es compatible con el
modismo estándar utilizado en muchos archivos MAKE que producen yacc programas; por ejemplo:

Foo: y.tab.o lex.o principal.o
$ (CC) $ (CFLAGS) −o $@ t.tab.o lex.o principal.o

En este ejemplo, si para lograr eligió cualquier orden arbitrario, el lex.o podría no estar hecho con el
correcta y.tab.h. Aunque puede haber mejores formas de expresar esta relación, es
ampliamente utilizado históricamente. Implementaciones que desean actualizar prerrequisitos en paralelo
debería requerir una extensión explícita para para lograr o el formato de archivo MAKE para lograrlo, como
descrito anteriormente.

El algoritmo para determinar una nueva entrada para las reglas de destino no está especificado parcialmente. Algunos
histórico para logrars permitir líneas en blanco, vacías o de comentarios dentro de la colección de comandos
marcado por el liderazgo caracteres. Un archivo MAKE conforme debe garantizar que cada comando
comienza con un , pero las implementaciones son libres de ignorar los espacios en blanco, vacíos y comentar
líneas sin desencadenar el inicio de una nueva entrada.

La sección EVENTOS ASÍNCRONOS incluye tener SIGTERM y SIGHUP, junto con más
SIGINT y SIGQUIT tradicionales, elimine el objetivo actual a menos que se le indique que no lo haga.
SIGTERM y SIGHUP se agregaron a otras utilidades paralelas que históricamente han limpiado
mejorar su trabajo como resultado de estas señales. Cuando para lograr recibe cualquier señal que no sea
SIGQUIT, se requiere que se reenvíe a sí mismo la señal que recibió para que salga con un
estado que refleja la señal. Los resultados de SIGQUIT son parcialmente no especificados
porque, en sistemas que crean core archivos al recibir SIGQUIT, el core Desde para lograr
entraría en conflicto con un core archivo del comando que se estaba ejecutando cuando el SIGQUIT
llegó. La principal preocupación era evitar que los archivos dañados aparecieran actualizados cuando para lograr
se vuelve a ejecutar.

El .PRECIOSO El objetivo especial se amplió para afectar a todos los objetivos a nivel mundial (al especificar que no
requisitos previos). los .IGNORAR y .SILENCIO Los objetivos especiales se ampliaron para permitir
prerrequisitos; se consideró más útil en algunos casos poder desactivar errores
o haciendo eco para una lista de objetivos que para todo el archivo MAKE. Estas extensiones a para lograr in
El sistema V se hizo para que coincida con la práctica histórica del BSD para lograr.

Las macros no se exportan al entorno de los comandos que se ejecutarán. Este nunca fue el caso
en cualquier historico para lograr y tendría graves consecuencias. El entorno es el mismo que
el medio ambiente para para lograr excepto eso HACER BANDERAS y macros definidas en el para lograr de línea de comandos
se agregan.

Algunas implementaciones no usan te() para todas las líneas de comando, como lo requiere el
formato de archivo MAKE portátil; como mejora del rendimiento, seleccionan líneas sin caparazón
metacaracteres para ejecución directa por ejecutivo(). No hay ningún requisito que te() ser
utilizado específicamente, pero simplemente que se logren los mismos resultados. Los metacaracteres
normalmente se utiliza para eludir el directo ejecutivo() ejecución ha sido cualquiera de:

= | ^ ( ) ; & < > * ? [ ] : $ ` ' " \ \n

El valor predeterminado en algunas versiones avanzadas de para lograr es agrupar todas las líneas de comando para un
apuntar y ejecutarlos utilizando una única invocación de shell; el método System V es pasar
cada línea individualmente a un caparazón separado. El método de capa única tiene las ventajas de
rendimiento y la falta de un requisito para muchas líneas continuas. Sin embargo, convertir a
Este método más nuevo ha causado problemas de portabilidad con muchos archivos MAKE históricos, por lo que el
El comportamiento con el archivo MAKE POSIX se especifica para que sea el mismo que el del Sistema V.
sugirió que el objetivo especial .ONESHELL ser utilizado como una extensión de implementación para
lograr la agrupación de capa única para un objetivo o grupo de objetivos.

Usuarios novatos de para lograr han tenido dificultades con la necesidad histórica de iniciar los comandos con un
. Dado que a menudo es difícil discernir diferencias entre y
caracteres en terminales o listados impresos, pueden surgir errores confusos. En las primeras propuestas,
Se hizo un intento para corregir este problema permitiendo que los líderes personajes en su lugar
de caracteres. Sin embargo, los implementadores informaron de muchos archivos MAKE que fallaron en sutiles
formas de seguir este cambio, y es difícil implementar un para lograr que inequívocamente puede
diferenciar entre macro y líneas de comando. Existe una extensa práctica histórica de
permitiendo liderar caracteres antes de las definiciones de macro. Forzando líneas macro en
la columna 1 sería un problema significativo de compatibilidad con versiones anteriores para algunos archivos MAKE.
Por tanto, se restauró la práctica histórica.

Existe una variación sustancial en el manejo de las líneas de inclusión por diferentes
implementaciones. Sin embargo, hay suficientes puntos en común para que el estándar pueda
especificar un conjunto mínimo de requisitos que permitan que la función se utilice de forma portátil. Conocido
las variaciones se han señalado explícitamente como comportamiento no especificado en la descripción.

La función de dependencia dinámica de System V no se incluyó. Apoyaría:

gato: [email protected]

que se expandiría a;

gato: gato.c

Esta función solo existe en la nueva versión de System V para lograr y, si bien es útil, no está en
amplio uso. Esto significa que las macros se expanden dos veces para los requisitos previos: una vez en el archivo MAKE
tiempo de análisis y una vez en el tiempo de actualización de destino.

Se consideró la posibilidad de añadir metarullas al POSIX. para lograr. Esto haría % .o: %.C
lo mismo que .co:. Esto es bastante útil y está disponible en algunos proveedores, pero
causar demasiados cambios en esto para lograr apoyar. Habría introducido el encadenamiento de reglas y
nuevas reglas de sustitución. Sin embargo, las reglas para los nombres de los objetivos se han establecido para reservar el
'%' y '"' caracteres. Estos se utilizan tradicionalmente para implementar metarules y cotización de
nombres de destino, respectivamente. Se recomienda encarecidamente a los implementadores que utilicen estos caracteres
solo para estos fines.

Se solicitó extender el carácter delimitador de sufijo de un a cualquier
personaje. Los metarules aparecen en los más nuevos. para logrars resuelve este problema de una manera más general.
Este volumen de POSIX.1‐2008 se mantiene con la definición histórica más conservadora.

El formato de salida estándar para −pag La opción no se describe porque es principalmente una
opción de depuración y porque el formato generalmente no es útil para los programas. En historico
implementaciones, la salida no es adecuada para su uso en la generación de archivos MAKE. los −pag formato
ha sido variable a través de implementaciones históricas. Por lo tanto, la definición de −pag fue
solo para proporcionar una opción con nombre coherente para obtener para lograr depuración de secuencias de comandos
información.

Algunas implementaciones históricas no han borrado la lista de sufijos con −r.

Las implementaciones deben tener en cuenta que algunas aplicaciones históricas se han mezclado
nombre_objetivo y macro=propuesta de operandos en la línea de comando, esperando que todas las macros
se procesan antes de que se trate cualquiera de los objetivos. Las aplicaciones conformes no sirven
esto, pero es posible que se justifique cierta compatibilidad con versiones anteriores.

Las reglas de inferencia vacías se especifican con un comando en lugar de omitir todo
comandos, como se describe en una propuesta anterior. El último caso no tiene un significado tradicional.
y está reservado para extensiones de implementación, como en GNU para lograr.

EL FUTURO DIRECCIONES


Ninguna.

Use makeposix en línea usando los servicios de onworks.net


Servidores y estaciones de trabajo gratuitos

Descargar aplicaciones de Windows y Linux

Comandos de Linux

Ad