Este es el comando bmake 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
bhake - mantener las dependencias del programa
SINOPSIS
bhake [-BeikNnqrstWwX] [-C directorio] [-D variable] [-d banderas] [-f makefile] [-I directorio]
[-J privada] [-j max_trabajos] [-m directorio] [-T presentar] [-V variable] [variable = valor]
[dirigidos ...]
DESCRIPCIÓN
bhake es un programa diseñado para simplificar el mantenimiento de otros programas. Su entrada es una
lista de especificaciones en cuanto a los archivos de los que dependen los programas y otros archivos. Si no -f
makefile se da la opción makefile, bhake intentará abrir 'makefile' entonces 'Makefile'en
para encontrar las especificaciones. Si el archivo '.depender'existe, se lee (ver mkdep(1)).
Esta página de manual está destinada a ser un documento de referencia únicamente. Para una descripción más completa
of bhake y makefiles, consulte PHacer - A Tutorial.
bhake antepondrá el contenido del HACER BANDERAS variable de entorno a la línea de comando
argumentos antes de analizarlos.
Las opciones son las siguientes:
-B Intente ser compatible con versiones anteriores ejecutando un solo shell por comando y
ejecutar los comandos para crear las fuentes de una línea de dependencia en secuencia.
-C directorio
Cambie a directorio antes de leer los archivos MAKE o hacer cualquier otra cosa. Si
una variedad -C se especifican opciones, cada una se interpreta en relación con la anterior:
-C / -C etc. es equivalente a -C / Etc.
-D variable
Definición variable ser 1, en el contexto global.
-d [-] banderas
Active la depuración y especifique qué partes de bhake son para imprimir depuración
información. A menos que las banderas estén precedidas por '-', se añaden al HACER BANDERAS
variable de entorno y será procesada por cualquier proceso de creación secundario. Por defecto,
La información de depuración se imprime a error estándar, pero esto se puede cambiar usando
los F bandera de depuración. La salida de depuración siempre está sin búfer; además, si
la depuración está habilitada pero la salida de depuración no se dirige a la salida estándar, entonces
la salida estándar tiene búfer de línea. Banderas es uno o más de los siguientes:
A Imprima toda la información de depuración posible; equivalente a especificar todos los
las banderas de depuración.
a Imprima información de depuración sobre la búsqueda de archivos y el almacenamiento en caché.
C Imprime información de depuración sobre el directorio de trabajo actual.
c Imprime información de depuración sobre evaluación condicional.
d Imprime información de depuración sobre la búsqueda de directorios y el almacenamiento en caché.
e Imprima información de depuración sobre comandos y destinos fallidos.
F[+]nombre de archivo
Especifique dónde se escribe la salida de depuración. Esta debe ser la última bandera
porque consume el resto del argumento. Si el personaje
inmediatamente después de que la bandera 'F' sea '+', el archivo se abrirá en
modo anexar; de lo contrario, el archivo se sobrescribirá. Si el nombre del archivo es
'stdout' o 'stderr', la salida de depuración se escribirá en el estándar
descriptores de archivo de salida de error estándar o de salida respectivamente (y el '+'
opción no tiene ningún efecto). De lo contrario, la salida se escribirá en el nombre
expediente. Si el nombre del archivo termina en '.% D', entonces el '% d' se reemplaza por el pid.
f Imprime información de depuración sobre la evaluación de bucles.
g1 Imprima el gráfico de entrada antes de hacer nada.
g2 Imprima el gráfico de entrada después de hacer todo o antes de salir por error.
g3 Imprima el gráfico de entrada antes de salir por error.
j Imprime información de depuración sobre la ejecución de varios shells.
l Imprimir comandos en Makefiles independientemente de si tienen o no prefijos
por '@' u otras banderas "silenciosas". También conocido como comportamiento "ruidoso".
M Imprime información de depuración sobre decisiones en modo "meta" sobre objetivos.
m Imprima información de depuración sobre la creación de objetivos, incluida la modificación
fechas.
n No elimine los scripts de comandos temporales que se crean al ejecutar comandos.
Estos scripts temporales se crean en el directorio al que hace referencia el
Variable de entorno TMPDIR, o en / Tmp si TMPDIR está desarmado o configurado en el
cuerda vacía. Los scripts temporales son creados por mktemp(3) y tener
nombres de la forma hacerXXXXXX. NOTA: Esto puede crear muchos archivos en TMPDIR o
/ Tmp, utilícelo con cuidado.
p Imprime información de depuración sobre el análisis de archivos MAKE.
s Imprima información de depuración sobre las reglas de transformación de sufijos.
t Imprima información de depuración sobre el mantenimiento de la lista de objetivos.
V Forzar el -V opción para imprimir valores brutos de variables.
v Imprime información de depuración sobre la asignación de variables.
x Ejecute comandos de shell con -x por lo que los comandos reales se imprimen como están
ejecutado.
-e Especifique que las variables de entorno anulan las asignaciones de macros dentro de los archivos MAKE.
-f makefile
Especifique un archivo MAKE para leer en lugar del predeterminado 'makefile'. Si makefile es '-»,
se lee la entrada estándar. Se pueden especificar varios archivos MAKE y se leen en el
orden especificada.
-I directorio
Especifique un directorio en el que buscar archivos MAKE y MAKE incluidos. los
directorio makefile del sistema (o directorios, consulte el -m opción) es automáticamente
incluido como parte de esta lista.
-i Ignore la salida distinta de cero de los comandos de shell en el archivo MAKE. Equivalente a especificar
"-'antes de cada línea de comando en el archivo MAKE.
-J privada
Esta opción debería no ser especificado por el usuario.
Cuando el j está en uso en una compilación recursiva, esta opción es pasada por una marca a
el niño hace para permitir que todos los procesos de creación en la construcción cooperen para evitar
sobrecargar el sistema.
-j max_trabajos
Especifique el número máximo de trabajos que bhake puede haber estado en ejecución en cualquier momento. los
el valor se guarda en .HACER. TRABAJOS. Desactiva el modo de compatibilidad, a menos que B bandera es
también especificado. Cuando el modo de compatibilidad está desactivado, todos los comandos asociados con un
el objetivo se ejecutan en una única invocación de shell a diferencia de la tradicional
invocación de shell por línea. Esto puede romper los scripts tradicionales que cambian
directorios en cada invocación de comando y luego esperar comenzar con un nuevo
medio ambiente en la siguiente línea. Es más eficiente corregir los scripts que
que activar la compatibilidad con versiones anteriores.
-k Continúe procesando después de que se encuentren errores, pero solo en aquellos objetivos que sí
no depende del objetivo cuya creación provocó el error.
-m directorio
Especifique un directorio en el que buscar sys.mk y los archivos MAKE incluidos a través del
⟨presentarDeclaración de inclusión de estilo⟩. los -m La opción se puede utilizar varias veces para formar una
ruta de búsqueda. Esta ruta anulará la ruta de inclusión predeterminada del sistema:
/ usr / share / mk. Además, la ruta de inclusión del sistema se agregará a la búsqueda
ruta utilizada para "presentar"-estilo incluyen declaraciones (consulte la -I opción).
Si un nombre de archivo o directorio en el -m argumento (o el entorno MAKESYSPATH
variable) comienza con la cadena "... /" luego bhake buscará el especificado
archivo o directorio nombrado en la parte restante de la cadena de argumentos. La búsqueda
comienza con el directorio actual del Makefile y luego trabaja hacia arriba hacia el
raíz del sistema de archivos. Si la búsqueda tiene éxito, entonces el directorio resultante
reemplaza la especificación "... /" en el -m argumento. Si se utiliza, esta función permite
bhake para buscar fácilmente en el árbol de origen actual archivos sys.mk personalizados (por ejemplo,
utilizando "... / mk / sys.mk" como argumento).
-n Muestre los comandos que se habrían ejecutado, pero no los ejecute realmente
a menos que el destino dependa de la fuente especial .MAKE (ver más abajo).
-N Muestra los comandos que se habrían ejecutado, pero en realidad no ejecute ninguno.
de ellos; útil para depurar archivos MAKE de nivel superior sin descender a
subdirectorios.
-q No ejecute ningún comando, pero salga 0 si los destinos especificados están actualizados y
1, de lo contrario.
-r No utilice las reglas integradas especificadas en el archivo MAKE del sistema.
-s No repita ningún comando mientras se ejecutan. Equivalente a especificar '@' antes de
cada línea de comando en el archivo MAKE.
-T archivo de rastreo
Cuando se usa con el -j bandera, anexar un registro de seguimiento a archivo de rastreo por cada trabajo iniciado
y completado.
-t En lugar de reconstruir un objetivo como se especifica en el archivo MAKE, créelo o actualice
su tiempo de modificación para que parezca actualizado.
-V variable
Imprimir bhakela idea del valor de variable, en el contexto global. No construir
cualquier objetivo. Se pueden especificar varias instancias de esta opción; las variables
imprimirse uno por línea, con una línea en blanco para cada variable nula o indefinida. Si
variable contiene un '$', el valor se expandirá antes de imprimir.
-W Trate las advertencias durante el análisis de Makefile como errores.
-w Imprima mensajes de entrada y salida de directorio, pre y post procesamiento.
-X No exporte las variables pasadas en la línea de comandos al entorno de forma individual.
Las variables pasadas en la línea de comando todavía se exportan a través de la HACER BANDERAS
Variable ambiental. Esta opción puede ser útil en sistemas que tienen un límite pequeño
en el tamaño de los argumentos del comando.
variable = valor
Establecer el valor de la variable variable a propuesta de. Normalmente, todos los valores pasados en el
La línea de comando también se exporta a sub-marcas en el entorno. los -X bandera
desactiva este comportamiento. Las asignaciones de variables deben seguir las opciones de POSIX
compatibilidad pero no se aplica ningún pedido.
Hay siete tipos diferentes de líneas en un archivo MAKE: especificaciones de dependencia de archivos,
comandos de shell, asignaciones de variables, incluyen declaraciones, directivas condicionales, bucles for,
y comentarios.
En general, las líneas pueden continuar de una línea a la siguiente terminándolas con una barra invertida.
('\'). El carácter de nueva línea final y el espacio en blanco inicial en la siguiente línea son
comprimido en un solo espacio.
ARCHIVO DEPENDENCIA ESPECIFICACIONES
Las líneas de dependencia constan de uno o más destinos, un operador y cero o más fuentes.
Esto crea una relación en la que los objetivos "dependen" de las fuentes y, por lo general, son
creado a partir de ellos. Se determina la relación exacta entre el objetivo y la fuente
por el operador que los separa. Los tres operadores son los siguientes:
: Un objetivo se considera desactualizado si su tiempo de modificación es menor que el de cualquier
de sus fuentes. Las fuentes de un objetivo se acumulan sobre las líneas de dependencia cuando esto
se utiliza el operador. El objetivo se elimina si bhake se interrumpe.
! Los objetivos siempre se vuelven a crear, pero no hasta que todas las fuentes hayan sido examinadas y recuperadas.
creado según sea necesario. Las fuentes de un objetivo se acumulan sobre las líneas de dependencia cuando esto
se utiliza el operador. El objetivo se elimina si bhake se interrumpe.
:: Si no se especifican fuentes, el destino siempre se vuelve a crear. De lo contrario, un objetivo es
considerada obsoleta si alguna de sus fuentes ha sido modificada más recientemente que la
objetivo. Las fuentes de un objetivo no se acumulan en las líneas de dependencia cuando esto
se utiliza el operador. El objetivo no se eliminará si bhake se interrumpe.
Los destinos y las fuentes pueden contener los valores comodín de shell '?', '*', '[]' Y '{}'. los
Los valores '?', '*' y '[]' solo se pueden utilizar como parte del componente final del objetivo o
fuente y debe usarse para describir archivos existentes. El valor '{}' no tiene por qué ser necesariamente
utilizado para describir archivos existentes. La expansión está en orden de directorio, no alfabéticamente como
hecho en la cáscara.
SHELL COMANDOS
Cada objetivo puede tener asociado una o más líneas de comandos de shell, normalmente utilizados
para crear el objetivo. Cada una de las líneas de este guión deben ir precedido de una pestaña. (Para
razones históricas, los espacios no son aceptados.) Mientras que los objetivos pueden aparecer en muchas dependencias
líneas si lo desea, de forma predeterminada, solo una de estas reglas puede ser seguida por un script de creación.
Si el '::'se utiliza el operador, sin embargo, todas las reglas pueden incluir scripts y los scripts son
ejecutado en el orden encontrado.
Cada línea se trata como un comando de shell independiente, a menos que el final de la línea se escape con un
barra invertida ('\') en cuyo caso esa línea y la siguiente se combinan. Si los primeros personajes
del comando son cualquier combinación de '@','+', o'-', el comando se trata de forma especial. A
"@'hace que el comando no se repita antes de que se ejecute. A '+'hace que el comando
ser ejecutado incluso cuando -n es dado. Esto es similar al efecto de .MAKE special
fuente, excepto que el efecto puede limitarse a una sola línea de un script. A '-'en
El modo de compatibilidad hace que se ignore cualquier estado de salida distinto de cero de la línea de comando.
Cuándo bhake se ejecuta en modo de trabajos con -j max_trabajos, todo el script del destino se envía a
una sola instancia del shell. En el modo de compatibilidad (sin trabajos), cada comando se ejecuta en un
proceso separado. Si el comando contiene metacaracteres de shell
('# = | ^ () {}; & <> *? []: $ `\\ n') se pasará al shell; de lo contrario bhake intentará
ejecución directa. Si una línea comienza con '-'y el shell tiene ErrCtl habilitado y luego falla
de la línea de comando se ignorará como en el modo de compatibilidad. De lo contrario '-' afecta el
trabajo completo; el script se detendrá en la primera línea de comando que falle, pero el objetivo
no se considerará que ha fallado.
Los Makefiles deben escribirse de modo que el modo de bhake la operación no cambia su
comportamiento. Por ejemplo, cualquier comando que necesite usar "cd" o "chdir" sin potencialmente
cambiar el directorio para los comandos posteriores debe ponerse entre paréntesis para que se ejecute
en una subcapa. Para forzar el uso de un caparazón, evite los saltos de línea para hacer que el
todo el script un comando. Por ejemplo:
evitar-efectos-secundarios-de-chdir:
@echo Building $ @ en `pwd`
@ (cd $ {. CURDIR} && $ {MAKE} $ @)
@echo De vuelta en `pwd`
asegurar-un-shell-independientemente-del-modo:
@echo Building $ @ en `pwd`;
(cd $ {. CURDIR} && $ {MAKE} $ @);
echo de nuevo en `pwd`
Since bhake will chdir(2) a '.OBJDIR'antes de ejecutar cualquier objetivo, cada proceso hijo
comienza con eso como su directorio de trabajo actual.
VARIABLE ASIGNACIONES
Las variables de make son muy parecidas a las variables del shell y, por tradición, constan de todas las
letras mayúsculas.
Variable asignación modificadores
Los cinco operadores que se pueden utilizar para asignar valores a las variables son los siguientes:
= Asignar el valor a la variable. Se anula cualquier valor anterior.
+= Agregue el valor al valor actual de la variable.
?= Asigne el valor a la variable si aún no está definida.
:= Asignar con expansión, es decir, expandir el valor antes de asignarlo a la variable.
Normalmente, la expansión no se realiza hasta que se hace referencia a la variable. NOTA: Referencias
a variables indefinidas son no expandido. Esto puede causar problemas cuando la variable
se utilizan modificadores.
!= Expanda el valor y páselo al shell para su ejecución y asigne el resultado al
variable. Cualquier nueva línea en el resultado se reemplaza con espacios.
Cualquier espacio en blanco antes del asignado propuesta de es removido; si se agrega el valor, un
se inserta un espacio único entre el contenido anterior de la variable y el anexo
.
Las variables se expanden rodeando el nombre de la variable con llaves ('{}') o
paréntesis ('()') y precediéndolo con un signo de dólar ('$'). Si el nombre de la variable contiene
sólo una letra, no se requieren las llaves o paréntesis que la rodean. Este mas corto
no se recomienda el formulario.
Si el nombre de la variable contiene un dólar, primero se expande el nombre en sí. Esto permite
nombres de variables casi arbitrarios, sin embargo, los nombres que contienen dólar, llaves, paréntesis o
¡Es mejor evitar los espacios en blanco!
Si el resultado de expandir una variable contiene un signo de dólar ('$'), la cadena se expande
de nuevo.
La sustitución de variables ocurre en tres momentos distintos, dependiendo de dónde se encuentre la variable.
siendo utilizado.
1. Las variables en las líneas de dependencia se expanden a medida que se lee la línea.
2. Las variables en los comandos de shell se expanden cuando se ejecuta el comando de shell.
3. Las variables de índice de bucle “.for” se expanden en cada iteración de bucle. Tenga en cuenta que otros
las variables no se expanden dentro de los bucles, por lo que el siguiente código de ejemplo:
.para yo en 1 2 3
a + = $ {i}
j = $ {i}
b + = $ {j}
.endfor
todo:
@echo $ {a}
@echo $ {b}
imprimirá:
1 2 3
3 3 3
Porque mientras $ {a} contiene "1 2 3" después de que se ejecuta el ciclo, $ {b} contiene "$ {j}
$ {j} $ {j} ”que se expande a“ 3 3 3 ”ya que después de que se completa el ciclo $ {j} contiene“ 3 ”.
Variable privadas
Las cuatro clases diferentes de variables (en orden de precedencia creciente) son:
Variables de entorno
Variables definidas como parte de bhakemedio ambiente.
Variables globales
Variables definidas en el archivo MAKE o en archivos MAKE incluidos.
Variables de línea de comando
Variables definidas como parte de la línea de comando.
Variables locales
Variables que se definen de forma específica para un determinado objetivo.
Todas las variables locales están integradas y sus valores varían mágicamente de un objetivo a otro. Eso
Actualmente no es posible definir nuevas variables locales. Las siete variables locales son como
manera:
.ALLSRC La lista de todas las fuentes para este objetivo; también conocido como '>".
.ARCHIVO El nombre del archivo de almacenamiento; también conocido como '!".
.IMPSRC En las reglas de transformación de sufijos, el nombre / ruta de la fuente desde la cual
el objetivo se va a transformar (la fuente "implícita"); también conocido como '<'. Eso
no está definido en reglas explícitas.
.MIEMBRO El nombre del miembro del archivo; también conocido como '%".
.OODATE La lista de fuentes para este objetivo que se consideraron desactualizadas; también conocido
como '?".
.PREFIJO El prefijo de archivo del destino, que contiene solo la parte del archivo, sin sufijo
o componentes de directorio anteriores; también conocido como '*'. El sufijo debe ser
uno de los sufijos conocidos declarados con .SUFIJOS o no sera
Reconocido.
.OBJETIVO El nombre del objetivo; también conocido como '@".
Las formas más cortas ('>','!','<','%','?','*', y'@') están permitidos para retroceso
No se recomienda la compatibilidad con archivos MAKE históricos y marcas POSIX heredadas.
Variantes de estas variables con la puntuación seguida inmediatamente de 'D' o 'F', p. Ej.
"$ (@ D)', son formas heredadas equivalentes a usar los modificadores': H 'y': T '. Estas formas son
aceptado por compatibilidad con archivos MAKE UNIX de AT&T System V y POSIX, pero no
recomendado.
Cuatro de las variables locales pueden usarse en fuentes en líneas de dependencia porque se expanden
al valor adecuado para cada objetivo en la línea. Estas variables son '.OBJETIVO','.PREFIJO»,
".ARCHIVO', y'.MIEMBRO".
Adicionales incorporado las variables
Además, bhake establece o conoce las siguientes variables:
$ Un solo signo de dólar '$', es decir, '$$' se expande a un solo signo de dólar.
.TODOS LOS DESTINATARIOS La lista de todos los objetivos encontrados en el Makefile. Si se evalúa durante
El análisis de Makefile enumera solo los destinos encontrados hasta el momento.
.CURDIR Una ruta al directorio donde bhake Fue ejecutado. Consulte la descripción.
de 'PWD' para más detalles.
.INCLUIDODEDIR
El directorio del archivo desde el que se incluyó este Makefile.
.INCLUYE DESDE ARCHIVO
El nombre del archivo desde el que se incluyó este Makefile.
HAGA El nombre que bhake fue ejecutado con (argv [0]). Por compatibilidad bhake
también establece .HACER con el mismo valor. La variable preferida para usar es la
variable de entorno MAKE porque es más compatible con otras versiones
of bhake y no se puede confundir con el objetivo especial con el mismo nombre.
.HACER.DEPENDFILE
Nombra el archivo MAKE (predeterminado '.depender') de las que se generan las dependencias
leer.
.MAKE.EXPAND_VARIABLES
Un booleano que controla el comportamiento predeterminado del -V .
.HACER.EXPORTADO La lista de variables exportadas por bhake.
.HACER. TRABAJOS El argumento de la -j .
.HACER.JOB.PREFIX
If bhake se ejecuta con j luego la salida para cada objetivo tiene un prefijo con un token
'--- target ---' cuya primera parte se puede controlar mediante
.HACER.JOB.PREFIX. Si .HACER.JOB.PREFIX está vacío, no se imprime ningún token.
Por ejemplo: .MAKE.JOB.PREFIX = $ {. Newline} --- $ {. MAKE: T} [$ {. MAKE.PID}] haría
producir tokens como '--- make [1234] target ---', lo que facilita el seguimiento de
grado de paralelismo alcanzado.
MAKEFLAGS La variable de entorno 'MAKEFLAGS' puede contener cualquier cosa que pueda ser
especificado en bhakelínea de comando. Cualquier cosa especificada en bhakecomando
La línea se agrega a la variable 'MAKEFLAGS' que luego se ingresa en el
entorno para todos los programas que bhake ejecuta.
.HACER.NIVEL La profundidad de recursividad de bhake. La instancia inicial de bhake será 0, y
un valor incrementado se coloca en el entorno para ser visto por el próximo
Generacion. Esto permite pruebas como: .if $ {. MAKE.LEVEL} == 0 para proteger
cosas que solo deben evaluarse en la instancia inicial de bhake.
.MAKE.MAKEFILE_PREFERENCE
La lista ordenada de nombres de archivos MAKE (predeterminado 'makefile','Makefile') ese
bhake Buscará
.HACER.MAKEFILES
La lista de archivos MAKE leídos por bhake, que es útil para rastrear
dependencias. Cada archivo MAKE se registra solo una vez, independientemente del número
de veces leído.
.MODO.HACER Procesado después de leer todos los archivos MAKE. Puede afectar el modo que bhake corre
in. Puede contener varias palabras clave:
compat Como -B, pone bhake en modo "compat".
meta Pone bhake en modo "meta", donde los archivos meta se crean para
cada objetivo para capturar la ejecución del comando, la salida generada y
if filemon(4) está disponible, las llamadas al sistema que son de
interés para bhake. La salida capturada puede ser muy útil cuando
diagnosticar errores.
curdirOk = bf Normalmente bhake no creará archivos .meta en '.CURDIR'. Esta
se puede anular configurando bf a un valor que representa
Verdadero.
env Para la depuración, puede ser útil incluir el entorno en
el archivo .meta.
verboso Si está en modo "meta", imprima una pista sobre el objetivo que se está construyendo.
Esto es útil si la compilación se ejecuta silenciosamente. los
mensaje imprimió el valor de: .HACER.META.PREFIX.
ignorar-cmd Algunos archivos MAKE tienen comandos que simplemente no son estables. Esta
palabra clave hace que se ignoren para determinar si un
el objetivo está desactualizado en el modo "meta". Ver también .NOMETA_CMP.
silencioso = bf If bf es Verdadero, cuando se crea un archivo .meta, marque el destino
.SILENCIO.
.HACER.META.BAILIWICK
En el modo "meta", proporciona una lista de prefijos que coinciden con los directorios.
controlado por bhake. Si un archivo que se generó fuera de .OBJDIR but
dentro de dicha bailía falta, el objetivo actual se considera fuera de
fecha.
.HACER.META.CREADO
En modo "meta", esta variable contiene una lista de todos los archivos meta actualizados.
Si no está vacío, se puede utilizar para activar el procesamiento de .HACER.ARCHIVOS.META..
.HACER.ARCHIVOS.META.
En el modo "meta", esta variable contiene una lista de todos los archivos meta utilizados
(actualizado o no). Esta lista se puede utilizar para procesar los archivos meta para
extraer información de dependencia.
.HACER.META.IGNORAR_PATHS
Proporciona una lista de prefijos de ruta que deben ignorarse; porque el
Se espera que los contenidos cambien con el tiempo. La lista predeterminada incluye: '/ dev
/ Etc / proc / Tmp / var / ejecutar / var / tmp'
.HACER.META.PREFIX
Define el mensaje impreso para cada metaarchivo actualizado en "meta detallado"
modo. El valor predeterminado es:
Edificio $ {. OBJETIVO: H: tA} / $ {. OBJETIVO: T}
.CAMBIOS DE CAMBIO Esta variable se utiliza para registrar los nombres de las variables asignadas en el
línea de comando, para que puedan exportarse como parte de 'MAKEFLAGS'. Esta
El comportamiento se puede desactivar asignando un valor vacío a '.CAMBIOS DE CAMBIO'
dentro de un archivo MAKE. Las variables adicionales se pueden exportar desde un archivo MAKE mediante
añadiendo sus nombres a '.CAMBIOS DE CAMBIO'. 'MAKEFLAGS' se reexporta
cuando sea '.CAMBIOS DE CAMBIO' es modificado.
.HACER.RUTA_ARCHIVO_MON
If bhake fue construido con filemon(4) soporte, esto se establece en la ruta de la
nodo de dispositivo. Esto permite que los archivos MAKE prueben este soporte.
.HACER.PID El ID de proceso de bhake.
.HACER.PPID El identificador de proceso principal de bhake.
.HACER.SALVAR_DÓLARES
El valor debe ser un boolen que controle si se conservan '$$' al hacer
': =' asignaciones. El valor predeterminado es falso, para compatibilidad con versiones anteriores. Colocar
a verdadero para compatibilidad con otras marcas. Si se establece en falso, '$$' se convierte en
'$' según las reglas de evaluación normales.
MAKE_PRINT_VAR_ON_ERROR
Cuándo bhake se detiene debido a un error, imprime su nombre y el valor de
".CURDIR'así como el valor de cualquier variable nombrada en
"MAKE_PRINT_VAR_ON_ERROR".
.nueva línea A esta variable simplemente se le asigna un carácter de nueva línea como su valor. Esta
permite expansiones usando el :@ modificador para poner una nueva línea entre iteraciones
del bucle en lugar de un espacio. Por ejemplo, la impresin de
"MAKE_PRINT_VAR_ON_ERROR'podría hacerse como
$ {MAKE_PRINT_VAR_ON_ERROR: @ v @ $ v = '$ {$ v}' $ {. Nueva línea} @}.
.OBJDIR Una ruta al directorio donde se construyen los destinos. Su valor es
determinado tratando de chdir(2) a los siguientes directorios en orden y
usando la primera coincidencia:
1. $ {MAKEOBJDIRPREFIX} $ {. CURDIR}
(Solo si 'MAKEOBJDIRPREFIX' está configurado en el entorno o en el comando
línea.)
2. $ {MAKEOBJDIR}
(Solo si 'MAKEOBJDIR' está configurado en el entorno o en el comando
línea.)
3. $ {. CURDIR}/ obj.$ {MÁQUINA}
4. $ {. CURDIR}/ obj
5. / usr / obj /$ {. CURDIR}
6. $ {. CURDIR}
La expansión variable se realiza en el valor antes de su uso, por lo que
expresiones como
$ {. CURDIR: S, ^/ usr / src, / var / obj,}
puede ser usado. Esto es especialmente útil con 'MAKEOBJDIR'.
".OBJDIR'se puede modificar en el archivo MAKE a través del objetivo especial'.OBJDIR".
En todos los casos, bhake will chdir(2) al directorio especificado si existe,
y establecer '.OBJDIR'y' PWD 'a ese directorio antes de ejecutar cualquier destino.
.PARSEDIR Una ruta al directorio de la actual 'Makefile'siendo analizado.
.PARSEFILE El nombre de base de la corriente 'Makefile'siendo analizado. Esta variable y
".PARSEDIR'se establecen solo mientras que el'Archivos Make'están siendo analizados. Si
desea conservar sus valores actuales, asígnelos a una variable usando
asignación con expansión: (':=').
.SENDERO Una variable que representa la lista de directorios que bhake buscará
para archivos. La lista de búsqueda debe actualizarse utilizando el objetivo '.SENDERO'
en lugar de la variable.
PWD Ruta alternativa al directorio actual. bhake normalmente establece '.CURDIR' para
el camino canónico dado por obtenercwd(3). Sin embargo, si la variable de entorno
'PWD' se establece y proporciona una ruta al directorio actual, luego bhake conjuntos
".CURDIR'al valor de' PWD 'en su lugar. Este comportamiento está deshabilitado si
'MAKEOBJDIRPREFIX' está establecido o 'MAKEOBJDIR' contiene una transformación variable.
'PWD' se establece en el valor de '.OBJDIR'para todos los programas que bhake
ejecuta.
.TARGETS La lista de destinos especificados explícitamente en la línea de comando, si los hay.
VPATH Listas de directorios separados por dos puntos (":") bhake buscará archivos.
La variable es compatible solo para compatibilidad con programas de fabricación antiguos, utilice
".SENDERO' en lugar de.
Variable modificadores
La expansión variable se puede modificar para seleccionar o modificar cada palabra de la variable (donde un
"Palabra" es una secuencia de caracteres delimitada por espacios en blanco). El formato general de una variable
La expansión es la siguiente:
$ {variable [: modificador [: ...]]}
Cada modificador comienza con dos puntos, que pueden escaparse con una barra invertida ('\').
Se puede especificar un conjunto de modificadores mediante una variable, de la siguiente manera:
variable_modificador = modificador [: ...]
$ {variable: $ {modifier_variable} [: ...]}
En este caso, el primer modificador en modifier_variable no comienza con dos puntos, ya que
que debe aparecer en la variable de referencia. Si alguno de los modificadores en el
modifier_variable contienen un signo de dólar ('$'), estos deben duplicarse para evitar los primeros
expansión.
Los modificadores admitidos son:
:E Reemplaza cada palabra de la variable con su sufijo.
:H Reemplaza cada palabra en la variable con todo menos el último componente.
:Mpatrón
Seleccione solo aquellas palabras que coincidan patrón. Los caracteres comodín estándar de shell
('*', '?' y '[]') se pueden usar. Los caracteres comodín se pueden escapar con un
barra invertida ('\'). Como consecuencia de la forma en que los valores se dividen en palabras, coinciden y
luego se unió, una construcción como
$ {VAR: M *}
normalizará el espacio entre palabras, eliminando todos los espacios iniciales y finales, y
convertir múltiples espacios consecutivos en espacios simples.
:Npatrón
Esto es idéntico a ':M', pero selecciona todas las palabras que no coinciden patrón.
:O Ordene cada palabra en variable alfabéticamente. Para ordenar las palabras en orden inverso, utilice el
": O: [- 1..1]'combinación de modificadores.
:Buey Aleatorizar palabras en variable. Los resultados serán diferentes cada vez que te refieras
a la variable modificada; usar la asignación con expansión (':=') para prevenir tal
comportamiento. Por ejemplo,
LISTA = uno due tre quattro
RANDOM_LIST = $ {LIST: Buey}
STATIC_RANDOM_LIST: = $ {LIST: Ox}
todo:
@echo "$ {RANDOM_LIST}"
@echo "$ {RANDOM_LIST}"
@echo "$ {STATIC_RANDOM_LIST}"
@echo "$ {STATIC_RANDOM_LIST}"
puede producir una salida similar a:
quattro debido tre uno
tre due quattro uno
debido a uno quattro tre
debido a uno quattro tre
:Q Cita todos los metacaracteres de shell en la variable, para que se pueda pasar de forma segura
a través de invocaciones recursivas de bhake.
:R Reemplaza cada palabra en la variable con todo menos su sufijo.
: gmtime
El valor es una cadena de formato para Strftime(3), utilizando la corriente tiempo gm(3).
:picadillo
Calcule un hash de 32 bits del valor y codifíquelo como dígitos hexadecimales.
:hora local
El valor es una cadena de formato para Strftime(3), utilizando la corriente hora local(3).
:ejército de reserva Intente convertir la variable en una ruta absoluta usando Realpath(3), si eso falla, el
el valor no cambia.
: tl Convierte variable a minúsculas.
: tsc
Las palabras de la variable normalmente están separadas por un espacio en la expansión. Este modificador
establece el separador del carácter c. Si c se omite, no se utiliza ningún separador.
Los escapes comunes (incluidos los códigos numéricos octales) funcionan como se esperaba.
: tu Convierte la variable en letras mayúsculas.
: tW Hace que el valor se trate como una sola palabra (que posiblemente contenga blanco incrustado
espacio). Ver también ': [*]".
: tw Hace que el valor se trate como una secuencia de palabras delimitadas por espacios en blanco. Ver
además ': [@]".
:S/cadena_antigua/nueva_cadena/[1gW]
Modificar la primera aparición de cadena_antigua en el valor de la variable, reemplazándolo con
nueva_cadena. Si se agrega una 'g' a la última barra oblicua del patrón, todas las apariciones en
cada palabra se reemplaza. Si se agrega un '1' a la última barra del patrón, solo
la primera palabra se ve afectada. Si se agrega una 'W' a la última barra oblicua del patrón,
luego, el valor se trata como una sola palabra (que posiblemente contenga espacios en blanco incrustados).
If cadena_antigua comienza con un signo de intercalación ('^'), cadena_antigua está anclado al comienzo de
cada palabra. Si cadena_antigua termina con un signo de dólar ('$'), está anclado al final de
cada palabra. Dentro nueva_cadena, un ampersand ('&') se reemplaza por cadena_antigua (sin
cualquier '^' o '$'). Se puede utilizar cualquier carácter como delimitador de las partes del
cadena modificadora. Los caracteres de anclaje, comercial y delimitador se pueden escapar con
una barra invertida ('\').
La expansión variable ocurre de manera normal dentro de ambos cadena_antigua y nueva_cadena
con la única excepción de que se utiliza una barra invertida para evitar la expansión de un dólar
sign ('$'), no un signo de dólar precedente como es habitual.
:C/patrón/reemplazo/[1gW]
El :C El modificador es como el :S modificador excepto que las cadenas antiguas y nuevas,
en lugar de ser cadenas simples, son una expresión regular extendida (ver expresiones regulares(3))
cadena patrón y una ed(1) -estilo de cuerda reemplazo. Normalmente, la primera aparición
del patrón patrón en cada palabra del valor se sustituye con reemplazo.
El modificador '1' hace que la sustitución se aplique como máximo a una palabra; el modificador 'g'
hace que la sustitución se aplique a tantas instancias del patrón de búsqueda patrón as
aparecer en la palabra o palabras en las que se encuentra; el modificador 'W' hace que el valor sea
tratada como una sola palabra (que posiblemente contenga espacios en blanco incrustados). Tenga en cuenta que '1' y
'g' son ortogonales; el primero especifica si varias palabras son potencialmente
afectado, esto último si pueden ocurrir múltiples sustituciones dentro de cada
palabra afectada.
En cuanto a las :S modificador, el patrón y reemplazo están sujetos a expansión variable
antes de analizarse como expresiones regulares.
:T Reemplaza cada palabra de la variable con su último componente.
:u Quite las palabras duplicadas adyacentes (como uniq(1)).
:?cadena_verdadera:cadena_falsa
Si el nombre de la variable (no su valor), cuando se analiza como una expresión condicional .if,
se evalúa como verdadero, devuelve como su valor el cadena_verdadera, de lo contrario devuelva el
cadena_falsa. Dado que el nombre de la variable se usa como expresión,:? debe ser el primero
modificador después del nombre de la variable en sí, que, por supuesto, generalmente contendrá
expansiones variables. Un error común es intentar usar expresiones como
$ {NUMBERS: M42:? Match: no}
que en realidad prueba la definición (NÚMEROS), para determinar si alguna palabra coincide con "42"
usa algo como:
$ {"$ {NÚMEROS: M42}"! = "":? Coincidencia: no}.
: cadena_antigua = cadena_nueva
Esta es la sustitución de variable de estilo AT&T System V UNIX. Debe ser el ultimo
modificador especificado. Si cadena_antigua or nueva_cadena no contienen la coincidencia de patrones
personaje % entonces se supone que están anclados al final de cada palabra, por lo que solo
se pueden reemplazar sufijos o palabras completas. De lo contrario % es la subcadena de cadena_antigua
para ser reemplazado en nueva_cadena.
La expansión variable ocurre de manera normal dentro de ambos cadena_antigua y nueva_cadena
con la única excepción de que se utiliza una barra invertida para evitar la expansión de un dólar
sign ('$'), no un signo de dólar precedente como es habitual.
:@temp@cadena@
Este es el mecanismo de expansión de bucle de la marca OSF Development Environment (ODE).
Diferente a la .para La expansión de los bucles se produce en el momento de la referencia. Asignar temp a cada palabra
en la variable y evaluar cadena. La convención ODE es que temp debería comenzar y
terminar con un punto. Por ejemplo.
$ {ENLACES: @. ENLACE. @ $ {LN} $ {OBJETIVO} $ {. ENLACE.} @}
Sin embargo, una variable de un solo carácter suele ser más legible:
$ {MAKE_PRINT_VAR_ON_ERROR: @ v @ $ v = '$ {$ v}' $ {. Nueva línea} @}
:Unuevo
Si la variable no está definida nuevo es el valor. Si la variable está definida, la
se devuelve el valor existente. Esta es otra característica de creación de ODE. Es útil para configurar
CFLAGS por objetivo, por ejemplo:
$ {_ $ {. OBJETIVO: T} _CFLAGS: U $ {DEF_CFLAGS}}
Si solo se requiere un valor si la variable no está definida, use:
$ {VAR: D: Unewval}
:Dnuevo
Si la variable está definida nuevo es el valor.
:L El nombre de la variable es el valor.
:P La ruta del nodo que tiene el mismo nombre que la variable es el valor. Si no hay tal
El nodo existe o su ruta es nula, entonces se usa el nombre de la variable. Para poder
este modificador para funcionar, el nombre (nodo) debe haber aparecido al menos en el lado derecho de un
dependencia.
:!cmd!
La salida de correr cmd es el valor.
: sh Si la variable no está vacía, se ejecuta como un comando y la salida se convierte en la nueva
.
:: =str
A la variable se le asigna el valor str después de la sustitución. Este modificador y su
Las variaciones son útiles en situaciones oscuras como querer establecer una variable cuando
Se están analizando los comandos de shell. Estos modificadores de asignación siempre se expanden a nada,
por lo tanto, si aparecen en una línea de reglas por sí mismos, debe ir precedido de algo para mantener
bhake feliz.
La '::'ayuda a evitar coincidencias falsas con el estilo UNIX de AT&T System V := modificador y
dado que la sustitución siempre ocurre el :: = la forma es vagamente apropiada.
::? =str
En cuanto a los :: = pero solo si la variable aún no tiene un valor.
:: + =str
Adjuntar str a la variable.
::! =cmd
Asignar la salida de cmd a la variable.
:[distancia]
Selecciona una o más palabras del valor o realiza otras operaciones relacionadas con el
forma en que el valor se divide en palabras.
Normalmente, un valor se trata como una secuencia de palabras delimitadas por espacios en blanco. Algunos
Los modificadores suprimen este comportamiento, lo que hace que un valor se trate como una sola palabra.
(posiblemente conteniendo espacios en blanco incrustados). Un valor vacío o un valor que consta de
enteramente de espacios en blanco, se trata como una sola palabra. A los efectos de la ': []'
modificador, las palabras se indexan ambos hacia adelante utilizando números enteros positivos (donde el índice 1
representa la primera palabra) y al revés utilizando números enteros negativos (donde el índice -1
representa la última palabra).
El distancia está sujeto a expansión variable, y el resultado expandido es entonces
interpretado de la siguiente manera:
índice Selecciona una sola palabra del valor.
comienzo..final
Selecciona todas las palabras de comienzo a final, inclusive. Por ejemplo, ': [2 ..- 1]'selecciona
todas las palabras desde la segunda hasta la última palabra. Si comienzo es mayor que final,
entonces las palabras se emiten en orden inverso. Por ejemplo, ': [- 1..1]'selecciona todo
las palabras de la última a la primera.
* Hace que los modificadores posteriores traten el valor como una sola palabra (posiblemente
que contiene espacios en blanco incrustados). Análogo al efecto de "$ *" en Bourne
cáscara.
0 Significa lo mismo que ': [*]".
@ Hace que los modificadores posteriores traten el valor como una secuencia de palabras delimitadas
por espacio en blanco. Análogo al efecto de "$ @" en el shell Bourne.
# Devuelve el número de palabras del valor.
INCLUIR DECLARACIONES, CONDICIONALES Y PARA Bucles
Inclusión de archivos Makefile, estructuras condicionales y bucles for que recuerdan a la programación en C
el idioma se proporciona en bhake. Todas estas estructuras están identificadas por una línea que comienza con
un carácter de un solo punto ('.'). Los archivos se incluyen con .incluir ⟨presentar⟩ o .incluir
"presentar". Las variables entre corchetes angulares o comillas dobles se expanden para formar el archivo
nombre. Si se utilizan corchetes angulares, se espera que el archivo MAKE incluido esté en el sistema
directorio makefile. Si se utilizan comillas dobles, el directorio del archivo MAKE incluido y cualquier
directorios especificados usando el -I Las opciones se buscan antes del directorio del archivo MAKE del sistema.
Para compatibilidad con otras versiones de bhake 'Incluir archivo ...' también se acepta.
Si la declaración de inclusión está escrita como .-incluir o como .incluir luego errores de localización y / o
los archivos de inclusión de apertura se ignoran.
Si la declaración de inclusión está escrita como .dincluir no solo son errores de localización y / o apertura
incluir archivos ignorados, pero las dependencias obsoletas dentro del archivo incluido se ignorarán solo
como uno .HACER.DEPENDFILE.
Las expresiones condicionales también están precedidas por un solo punto como primer carácter de una línea.
Los posibles condicionales son los siguientes:
.error mensaje
El mensaje se imprime junto con el nombre del archivo MAKE y el número de línea, luego
bhake saldrá
.exportar variable ...
Exporta la variable global especificada. Si no se proporciona una lista de variables, todos los globales
se exportan excepto las variables internas (las que comienzan con '.'). Esto no es
afectado por el -X flag, por lo que debe usarse con precaución. Por compatibilidad con
other bhake Los programas 'exportar variable = value' también se aceptan.
Agregar un nombre de variable a .HACER.EXPORTADO equivale a exportar una variable.
.export-env variable ...
Lo mismo que '.export', excepto que la variable no se agrega a .HACER.EXPORTADO.
Esto permite exportar al medio un valor diferente al utilizado
by bhake internamente.
.export-literal variable ...
Lo mismo que '.export-env', excepto que las variables en el valor no se expanden.
. Información mensaje
El mensaje se imprime junto con el nombre del archivo MAKE y el número de línea.
.undef variable
Anula la definición de la variable global especificada. Solo las variables globales pueden no estar definidas.
.unexportar variable ...
Lo contrario de '.export'. El global especificado variable será eliminado de
.HACER.EXPORTADO. Si no se proporciona una lista de variables, todas las globales no se exportan y
.HACER.EXPORTADO eliminada.
.unexport-env
Anule la exportación de todos los globales exportados anteriormente y borre el entorno heredado de
el padre. Esta operación provocará una pérdida de memoria del entorno original, por lo que
debe usarse con moderación. Prueba para .HACER.NIVEL siendo 0, tendría sentido. También
tenga en cuenta que cualquier variable que se originó en el entorno padre debe ser
preservado explícitamente si se desea. Por ejemplo:
.if $ {. MAKE.LEVEL} == 0
RUTA: = $ {RUTA}
.unexport-env
.exportar RUTA
.terminara si
Daría como resultado un entorno que contiene solo 'PATH', que es el mínimo útil
medio ambiente. En realidad, '.MAKE.LEVEL' también se incluirá en el nuevo entorno.
.advertencia mensaje
El mensaje con el prefijo 'advertencia:'se imprime junto con el nombre del archivo MAKE
y número de línea.
.si [!]expresión [operador expresión ...]
Prueba el valor de una expresión.
.ifdef [!]variable [operador variable ...]
Prueba el valor de una variable.
.ifndef [!]variable [operador variable ...]
Prueba el valor de una variable.
.sihacer [!]dirigidos [operador dirigidos ...]
Pruebe el objetivo que se está construyendo.
.ifnmake [!] dirigidos [operador dirigidos ...]
Pruebe el objetivo que se está construyendo.
.demás Invierte el sentido del último condicional.
.elif [!] expresión [operador expresión ...]
Una combinación de '.demás' seguido por '.si".
.elifdef [!]variable [operador variable ...]
Una combinación de '.demás' seguido por '.ifdef".
.elifndef [!]variable [operador variable ...]
Una combinación de '.demás' seguido por '.ifndef".
.elifmake [!]dirigidos [operador dirigidos ...]
Una combinación de '.demás' seguido por '.sihacer".
.elifnmake [!]dirigidos [operador dirigidos ...]
Una combinación de '.demás' seguido por '.ifnmake".
.terminara si Termina el cuerpo del condicional.
El operador puede ser cualquiera de los siguientes:
|| OR lógico.
&& AND lógico; de mayor precedencia que “||”.
Como en C, bhake sólo evaluará un condicional en la medida en que sea necesario para determinar su
valor. Se pueden usar paréntesis para cambiar el orden de evaluación. El operador booleano '!'
puede usarse para negar lógicamente un condicional completo. Es de mayor precedencia que
"&&".
El valor de expresión puede ser cualquiera de los siguientes:
se define Toma un nombre de variable como argumento y se evalúa como verdadero si la variable ha sido
definido.
make Toma un nombre de objetivo como argumento y se evalúa como verdadero si el objetivo fue
especificado como parte de bhakelínea de comando o se declaró el destino predeterminado
(ya sea implícita o explícitamente, consulte .PRINCIPAL) antes de la línea que contiene el
condicional.
vacío Toma una variable, con posibles modificadores, y se evalúa como verdadera si la expansión
de la variable daría como resultado una cadena vacía.
existe Toma un nombre de archivo como argumento y se evalúa como verdadero si el archivo existe. los
se busca el archivo en la ruta de búsqueda del sistema (consulte .SENDERO).
dirigidos Toma un nombre de objetivo como argumento y se evalúa como verdadero si el objetivo ha sido
definido.
comandos
Toma un nombre de objetivo como argumento y se evalúa como verdadero si el objetivo ha sido
definido y tiene comandos asociados.
expresión también puede ser una comparación aritmética o de cadenas. Se realiza expansión variable
en ambos lados de la comparación, después de lo cual se comparan los valores integrales. Un valor es
se interpreta como hexadecimal si va precedido de 0x, de lo contrario es decimal; números octales
no son compatibles. Se admiten todos los operadores relacionales C estándar. Si despues
expansión variable, ya sea el lado izquierdo o derecho de un '==O!='operador no es un
valor integral, luego se realiza la comparación de cadenas entre las variables expandidas. Si no
Se da el operador relacional, se supone que la variable expandida se compara
contra 0 o una cadena vacía en el caso de una comparación de cadenas.
Cuándo bhake está evaluando una de estas expresiones condicionales, y encuentra un (blanco-
espacio separado) palabra que no reconoce, ya sea la expresión "hacer" o "definida" es
aplicado a él, dependiendo de la forma del condicional. Si la forma es '.ifdef»,
".ifndef', o'.si'se aplica la expresión "definida". Del mismo modo, si la forma es
".sihacerO.ifnmake, losSe aplica la expresión '“hacer”.
Si el condicional se evalúa como verdadero, el análisis del archivo MAKE continúa como antes. Si se
se evalúa como falso, se omiten las siguientes líneas. En ambos casos esto continúa hasta que un
".demásO.terminara si' es encontrado.
Los bucles for se utilizan normalmente para aplicar un conjunto de reglas a una lista de archivos. La sintaxis de un
for loop es:
.para variable [variable ...] in expresión
⟨establecer reglas⟩
.endfor
Después de la para expresión se evalúa, se divide en palabras. En cada iteración del
bucle, se toma una palabra y se asigna a cada variable, en orden, y estos las variables están
sustituido en el establecer reglas dentro del cuerpo del bucle for. El número de palabras debe
salir incluso; es decir, si hay tres variables de iteración, el número de palabras proporcionadas
debe ser un múltiplo de tres.
COMENTARIOS
Los comentarios comienzan con un carácter de almohadilla ('#'), en cualquier lugar menos en una línea de comandos de shell, y
continúe hasta el final de una nueva línea sin escape.
SPECIAL FUENTES (ATRIBUTOS)
.EXEC Target nunca está desactualizado, pero siempre ejecuta comandos de todos modos.
.IGNORAR Ignore cualquier error de los comandos asociados con este objetivo, exactamente como si
todos fueron precedidos por un guión ('-').
.HECHA Marque todas las fuentes de este objetivo como actualizadas.
.HACER Ejecute los comandos asociados con este objetivo incluso si el -n or -t las opciones eran
especificado. Normalmente se usa para marcar recursivo bhakes.
.META Cree un metaarchivo para el objetivo, incluso si está marcado como .FALSO, .HACERo
.ESPECIAL. Uso junto con .HACER es el caso más probable. En "meta"
modo, el destino está desactualizado si falta el archivo meta.
.NOMETA No cree un archivo meta para el objetivo. Los archivos meta tampoco se crean para
.FALSO, .HACERo .ESPECIAL objetivos.
.NOMETA_CMP
Ignore las diferencias en los comandos al decidir si el objetivo está desactualizado. Este es
útil si el comando contiene un valor que siempre cambia. Si el número de
Sin embargo, los comandos cambian, el objetivo seguirá estando desactualizado. El mismo efecto
se aplica a cualquier línea de comando que use la variable .OODATE, que se puede utilizar para
ese propósito incluso cuando no sea necesario o deseado de otra manera:
saltar-comparar-para-algunos:
@echo esto se comparará
@echo esto no será $ {. OODATE: M.NOMETA_CMP}
@echo esto también se comparará
El :M patrón suprime cualquier expansión de la variable no deseada.
.NO HAY CAMINO No busque el destino en los directorios especificados por .SENDERO.
.NO PRINCIPAL Normalmente bhake selecciona el primer objetivo que encuentra como el objetivo predeterminado para ser
construido si no se especificó ningún objetivo. Esta fuente evita que este objetivo sea
seleccionado.
.OPCIONAL
Si un objetivo está marcado con este atributo y bhake no puedo averiguar cómo crear
, ignorará este hecho y asumirá que el archivo no es necesario o que ya existe.
.FALSO El destino no corresponde a un archivo real; siempre se considera que es
desactualizado, y no se creará con el -t opción. Transformación de sufijo
las reglas no se aplican a .FALSO objetivos.
.PRECIOSO
Cuándo bhake se interrumpe, normalmente elimina los objetivos parcialmente hechos. Esta
source evita que se elimine el objetivo.
.RECURSIVO
Sinónimo de .HACER.
.SILENCIO No repita ninguno de los comandos asociados con este objetivo, exactamente como si
todos fueron precedidos por un signo de arroba ('@').
.USAR Convierte el objetivo en bhakeversión de una macro. Cuando el objetivo se utiliza como
fuente para otro objetivo, el otro objetivo adquiere los comandos, fuentes y
atributos (excepto para .USAR) de la fuente. Si el objetivo ya tiene comandos,
los .USAR se les añaden los comandos del objetivo.
.USAR ANTES
Exactamente como .USAR, pero anteponer el .USAR ANTES comandos de destino al destino.
.ESPERE If .ESPERE aparece en una línea de dependencia, las fuentes que la preceden se hacen antes
las fuentes que lo suceden en la línea. Dado que los dependientes de los archivos no son
hecho hasta que se pueda hacer el archivo en sí, esto también evita que los dependientes sean
construidos a menos que sean necesarios para otra rama del árbol de dependencias. Así dado:
x: a .ESPERA b
eco x
a:
hacer eco de un
segundo: b1
eco b
b1:
eco b1
la salida es siempre 'a', 'b1', 'b', 'x'.
El ordenamiento impuesto por .ESPERE solo es relevante para marcas paralelas.
SPECIAL OBJETIVOS
Los objetivos especiales no pueden incluirse con otros objetivos, es decir, deben ser el único objetivo
especificado.
.EMPEZAR Cualquier línea de comando adjunta a este objetivo se ejecuta antes que cualquier otra cosa.
hecho.
.DEFECTO
Esto es una especie de .USAR regla para cualquier objetivo (que se usó solo como fuente) que
bhake No puedo encontrar otra forma de crear. Solo se utiliza el script de shell.
El .IMPSRC variable de un objetivo que hereda .DEFECTOLos comandos de
el propio nombre del objetivo.
.FIN Cualquier línea de comando adjunta a este objetivo se ejecuta después de que todo lo demás esté
hecho.
.ERROR Cualquier línea de comando adjunta a este objetivo se ejecuta cuando falla otro objetivo.
El .ERROR_OBJETIVO La variable se establece en el destino que falló. Ver también
MAKE_PRINT_VAR_ON_ERROR.
.IGNORAR Marque cada una de las fuentes con el .IGNORAR atributo. Si no se especifican fuentes,
esto es el equivalente a especificar el -i .
.INTERRUMPIR
If bhake se interrumpe, se ejecutarán los comandos para este objetivo.
.PRINCIPAL Si no se especifica ningún objetivo cuando bhake se invoca, este objetivo se creará.
.MAKEFLAGS
Este objetivo proporciona una forma de especificar banderas para bhake cuando se utiliza el archivo MAKE.
Las banderas son como si estuvieran escritas en el shell, aunque el -f La opción no tendrá ningún efecto.
.NO HAY CAMINO Aplique la .NO HAY CAMINO atributo a cualquier fuente especificada.
.NO PARALELO
Desactive el modo paralelo.
.NO_PARALELO
Sinónimo de .NO PARALELO, por compatibilidad con otras variantes de pmake.
.OBJDIR La fuente es un nuevo valor para '.OBJDIR'. Si existiera, bhake will chdir(2) a eso
y actualice el valor de '.OBJDIR".
.PEDIDO Los objetivos nombrados se hacen en secuencia. Este orden no agrega objetivos al
lista de objetivos a realizar. Dado que los dependientes de un objetivo no se construyen
hasta que el objetivo en sí pueda ser construido, a menos que 'a' sea construido por otra parte del
gráfico de dependencia, el siguiente es un ciclo de dependencia:
.ORDEN: ba
b: un
El ordenamiento impuesto por .PEDIDO solo es relevante para marcas paralelas.
.SENDERO Las fuentes son directorios en los que se deben buscar archivos que no se encuentran en el
directorio actual. Si no se especifican fuentes, cualquier especificada previamente
se eliminan los directorios. Si la fuente es la especial .DOTLAST objetivo, entonces el
El directorio de trabajo actual se busca en último lugar.
.SENDERO.sufijo
Como .SENDERO pero se aplica solo a archivos con un sufijo particular. El sufijo debe
han sido declarados previamente con .SUFIJOS.
.FALSO Aplique la .FALSO atributo a cualquier fuente especificada.
.PRECIOSO
Aplique la .PRECIOSO atributo a cualquier fuente especificada. Si no hay fuentes
especificado, el .PRECIOSO El atributo se aplica a todos los objetivos del archivo.
.CASCARÓN Establece el caparazón que bhake utilizará para ejecutar comandos. Las fuentes son un conjunto de
campo = valor pares.
nombre Ésta es la especificación mínima, que se utiliza para seleccionar uno de los
especificaciones de shell; sh, kshy csh.
camino Especifica la ruta al shell.
tieneErrCtl Indica si el shell admite la salida en caso de error.
check El comando para activar la verificación de errores.
pasar por alto El comando para deshabilitar la verificación de errores.
echo El comando para activar el eco de los comandos ejecutados.
tranquilo El comando para desactivar el eco de los comandos ejecutados.
filtrar La salida a filtrar después de emitir el tranquilo mando. Es típicamente
idéntico a tranquilo.
errBandera La bandera para pasar el shell para permitir la verificación de errores.
ecobandera La bandera para pasar el shell para habilitar el eco de comandos.
nueva línea El literal de cadena para pasar el shell que da como resultado una única línea nueva
carácter cuando se utiliza fuera de cualquier carácter entre comillas.
Ejemplo:
.SHELL: nombre = ksh ruta = / bin / ksh hasErrCtl = true
check = "set -e" ignore = "set + e"
echo = "set -v" silencioso = "set + v" filter = "set + v"
echoFlag = v errFlag = e nueva línea = "'\ n'"
.SILENCIO Aplique la .SILENCIO atributo a cualquier fuente especificada. Si no se especifican fuentes,
los .SILENCIO El atributo se aplica a todos los comandos del archivo.
.DURO Este objetivo se ejecuta cuando un archivo de dependencia contiene entradas obsoletas, teniendo .ALLSRC
establecido en el nombre de ese archivo de dependencia.
.SUFIJOS
Cada fuente especifica un sufijo para bhake. Si no se especifican fuentes, cualquier
se eliminan los sufijos previamente especificados. Permite la creación de sufijos
reglas de transformación.
Ejemplo:
.SUFIJOS: .o
.co:
cc -o $ {. OBJETIVO} -c $ {. IMPSRC}
MEDIO AMBIENTE
bhake utiliza las siguientes variables de entorno, si existen: MACHINE, MACHINE_ARCH,
MACHINE_MULTIARCH, MAKE, MAKEFLAGS, MAKEOBJDIR, MAKEOBJDIRPREFIX, MAKESYSPATH, PWD y
TMPDIR.
MAKEOBJDIRPREFIX y MAKEOBJDIR solo se pueden configurar en el entorno o en la línea de comando para
bhake y no como variables makefile; ver la descripción de '.OBJDIR' para más detalles.
Use bmake en línea usando los servicios de onworks.net