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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de