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.
Variable | Significado |
---|---|
$% | 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. |
Arkansas | Nombre del archivo de mantenimiento de programa (valor predeterminado: ar). |
ARFLAGS | Banderas para el (valor predeterminado: rv) archivo de mantenimiento de los programas. |
AS | Nombre del programa ensamblador que convierte la assemblylanguage objetar (valor por defecto: como) código. |
ASFLAGS | Banderas para el ensamblador. |
CC | Nombre del compilador C (valor predeterminado: cc). |
CFLAGS | Banderas que se pasan al compilador C. |
Colorado | Nombre del programa que extrae un archivo de RCS (DefaultValue: co). |
COFLAGS | Banderas para el RCS co programa. |
CPP | Nombre de la C preprocesador (valor por defecto: $ (CC) -S). |
CPPFLAGS | Banderas para el preprocesador C. |
CXX | Nombre del compilador C ++ (valor predeterminado: g ++). |
CXXFLAGS | Banderas que se pasan al compilador de C ++. |
FC | Nombre del compilador FORTRAN (valor predeterminado: f77). |
FFlags | Banderas para el compilador Fortran. |
LDFLAGS | Banderas para el compilador cuando se supone invocar thelinker ld. |
RM | Nombre del comando para eliminar un archivo (valor predeterminado: rm -f). |