Compartir a través de


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.

Consulte también

Macros y NMAKE