Linux: variables (o macros) en los gnu hacen utilidad

El GNU hacer utilidad en Linux viene a su rescate mediante la lectura e interpretación de un makefile. Además de la capacidad básica de los objetivos de construcción a partir dependientes, GNU hacer incluye muchas características que hacen que sea fácil para que usted exprese las dependencias y las reglas para la construcción de un objetivo de sus dependientes.

Si necesita compilar un gran número de C ++ archivos mediante el uso de GCC con las mismas opciones, por ejemplo, al escribir las opciones para cada archivo es tedioso. Usted puede evitar esta tarea repetitiva mediante la definición de una variable o una macro en hacer de la siguiente manera:

# Definir macros para el nombre de compilerCXX = g ++ # Definir una macro para el CCG flagsCXXFLAGS = -O2 -g -mcpu = i686 # Una regla para la construcción de un fileform.o objeto: form.C form.h $ (CXX) -c $ (CXXFLAGS) form.C

En este ejemplo, CXX y CXXFLAGS son hacer variables. (GNU hacer prefiere llamarlos variables, pero la mayoría Unix hacer utilidades llaman macros.)

Para utilizar una variable en cualquier lugar del makefile, comenzar con un signo de dólar ($) Seguido de la variable dentro de paréntesis. GNU que reemplaza todas las ocurrencias de una variable con su definición- lo tanto, sustituye todas las apariciones de $(CXXFLAGS) Con la cadena de -O2 -g -mcpu = i686.

GNU make tiene varias variables predefinidas que tienen significados especiales. Esta tabla muestra estas variables. Además de las variables mencionadas aquí, GNU hacer considera todas las variables de entorno (como CAMINO y CASA) Para ser predefinido variables.

Algunas variables predefinidas en GNU hacen
VariableSignificado
$%Nombre del miembro de objetivos que son los archivos. Si el objetivo eslibDisp.a (image.o), por ejemplo, $% es image.o.
$ *Nombre del archivo de destino sin la extensión.
$ +Los nombres de todos los archivos dependientes con dependencias duplicados, indican en su orden de aparición.
$ lt;El nombre del primer archivo dependiente.
$?Los nombres de todos los archivos dependientes (con espacios entre los nombres) que son más recientes que la meta.
$ @Nombre completo del objetivo. Si el objetivo es libDisp.a image.o), por ejemplo, $ @ es libDisp.a.
$ ^Los nombres de todos los archivos dependientes, con espacios entre los names.Duplicates se retiran de los nombres de los archivos dependientes.
ArkansasNombre del archivo de mantenimiento de programa (valor predeterminado: ar).
ARFLAGSBanderas para el (valor predeterminado: rv) archivo de mantenimiento de los programas.
ASNombre del programa ensamblador que convierte la assemblylanguage objetar (valor por defecto: como) código.
ASFLAGSBanderas para el ensamblador.
CCNombre del compilador C (valor predeterminado: cc).
CFLAGSBanderas que se pasan al compilador C.
ColoradoNombre del programa que extrae un archivo de RCS (DefaultValue: co).
COFLAGSBanderas para el RCS co programa.
CPPNombre de la C preprocesador (valor por defecto: $ (CC) -S).
CPPFLAGSBanderas para el preprocesador C.
CXXNombre del compilador C ++ (valor predeterminado: g ++).
CXXFLAGSBanderas que se pasan al compilador de C ++.
FCNombre del compilador FORTRAN (valor predeterminado: f77).
FFlagsBanderas para el compilador Fortran.
LDFLAGSBanderas para el compilador cuando se supone invocar thelinker ld.
RMNombre del comando para eliminar un archivo (valor predeterminado: rm -f).



» » » » Linux: variables (o macros) en los gnu hacen utilidad