Macros NMAKE especiales
NMAKE ofrece varias macros especiales para representar varios nombres de archivo y comandos. Uno de los usos para algunas de estas macros es en las reglas de inferencia predefinidas. Como todas las macros, las macros proporcionadas por NMAKE distinguen mayúsculas de minúsculas.
Macros de nombre de archivo
Las macros de nombre de archivo son nombres de archivo predefinidos as especificados en la dependencia (no las especificaciones completas del nombre de archivo en el disco). Estas macros no necesitan incluirse entre paréntesis cuando se invocan; especifique solo un $
as elemento que se muestra.
Macro | Significado |
---|---|
$@ |
Nombre completo del destino actual (ruta de acceso, nombre base, extensión), as especificado actualmente. |
$$@ |
Nombre completo del destino actual (ruta de acceso, nombre base, extensión), as especificado actualmente. Válido solo as un dependiente de una dependencia. |
$* |
La ruta de acceso del objetivo actual y el nombre base menos la extensión del archivo. |
$** |
Todos los dependientes del destino actual. |
$? |
Todos los dependientes con una marca de tiempo posterior al destino actual. |
$< |
Archivo dependiente con una marca de tiempo posterior al destino actual. Solo es válido en los comandos de reglas de inferencia. |
Para especificar parte de una macro de nombre de archivo predefinida, anexe un modificador de macro y incluya la macro modificada entre paréntesis.
Modificador | Parte de nombre del archivo resultante |
---|---|
D |
Unidad más directorio |
B |
Nombre base |
F |
Nombre base más extensión |
R |
Unidad más directorio y nombre base |
Macros de recursividad
Use las macros de recursión para llamar a NMAKE de forma recursiva. Las sesiones recursivas heredan las macros y la información Tools.ini
de la línea de comandos y de las variables de entorno. No heredan las reglas de inferencia definidas por el archivo Make o las especificaciones .SUFFIXES
y .PRECIOUS
. Hay tres maneras de pasar las macros a una sesión de NMAKE recursiva:
- Establezca una variable de entorno con un comando
SET
antes de la llamada recursiva. - Defina una macro en el comando para la llamada recursiva.
- O bien, defina una macro en
Tools.ini
.
Macro | Definición |
---|---|
MAKE |
El comando que se usa originalmente para invocar a NMAKE. La macro $(MAKE) proporciona la ruta de acceso completa a nmake.exe . |
MAKEDIR |
El directorio actual cuando se invocó a NMAKE. |
MAKEFLAGS |
Las opciones están actualmente en vigor. Use as/$(MAKEFLAGS) . No se incluye la /F opción . |
Macros de comando y macros de opciones
Las macros de comando están predefinidas para los productos de Microsoft. Las macros de opciones representan las opciones para estos productos y no están definidas de manera predeterminada. Ambas se usan en las reglas de inferencia predefinidas y se pueden usar en los bloques de descripción o en las reglas de inferencia definidas por el usuario. Las macros de comandos se pueden redefinir para representar parte o toda una línea de comandos, incluidas las opciones. Las macros de opciones generan una cadena null si se deja sin definir.
Herramienta | Macro de comando | Definido as | Opciones de macro |
---|---|---|---|
Ensamblador de macro | AS |
ml o ml64 |
AFLAGS |
Compilador de C | CC |
cl |
CFLAGS |
Compilador C++ | CPP |
cl |
CPPFLAGS |
Compilador C++ | CXX |
cl |
CXXFLAGS |
compilador de recursos | RC |
rc |
RFLAGS |
Macros de variables de entorno
NMAKE hereda las definiciones de macros para las variables de entorno que existen antes del inicio de la sesión. Si se estableció una variable en el entorno del sistema operativo, está disponible as una macro NMAKE. Los nombres heredados se convierten en mayúsculas. La herencia se produce antes del preprocesamiento. Use la opción /E para hacer que las macros heredadas de las variables de entorno invaliden las macros con el mismo nombre en el archivo Make.
Las macros de variables de entorno se pueden redefinir en la sesión, lo que cambia la variable de entorno correspondiente. También puede cambiar las variables de entorno con el comando SET. Sin embargo, el uso del comando SET para cambiar una variable de entorno en una sesión no cambia la macro en cuestión.
Por ejemplo:
PATH=$(PATH);\nonesuch
all:
echo %%PATH%%
En este ejemplo, el cambio PATH
modifica la variable de entorno correspondiente PATH
, se anexa \nonesuch
a la ruta de acceso.
Si una variable de entorno se define as una cadena que sería sintácticamente incorrecta en un archivo Make, no se crea ninguna macro y no se genera ninguna advertencia. Si el valor de una variable contiene un signo de dólar ($), NMAKE lo as interpreta al principio de una invocación de macro. El uso de la macro puede causar un comportamiento inesperado.