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 están predefinidas como nombres de archivo especificados en la dependencia (no en las especificaciones de nombre completo de archivo en el disco). Estas macros no tienen que estar entre paréntesis cl cuando se invocan; especifique solo una $ como se muestra.

Macro Significado
$@ Nombre completo del destino actual (ruta de acceso, nombre base, extensión), tal y como se ha especifica actualmente.
$$@ Nombre completo del destino actual (ruta de acceso, nombre base, extensión), tal y como se ha especifica actualmente. Solo es válido como 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 pongacl 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. Usar como /$(MAKEFLAGS). La opción /F no está incluidacl.

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 la totalidad de una línea de comandos, incluidas cl las opciones. Las macros de opciones generan una cadena null si se deja sin definir.

Herramienta Macro de comando Definido como 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 recursosrc 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 una variable se ha establecido en el entorno del sistema operativo, está disponible como una macro NMAKE. Los nombres heredados se convierten en mayúsculasrc. 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 como una cadena que sería sintácticamente incorrecta en un archivo Make, no se crea ninguna macro ni se genera una advertencia. Si el valor de una variable contiene un signo de dólar ($), NMAKE lo interpreta como el inicio de una invocación de macro. El uso de la macro puede causar un comportamiento inesperado.

Consulte también

Macros y NMAKE