Macros spéciales de NMAKE

NMAKE fournit plusieurs macros spéciales pour représenter différents noms de fichiers et commandes. Une utilisation pour certaines de ces macros se trouve dans les règles d’inférence prédéfinies. Comme toutes les macros, les macros fournies par NMAKE respectent la casse.

Macros de nom de fichier

Les macros de nom de fichier sont prédéfinies en tant que noms de fichiers spécifiés dans la dépendance (spécifications de nom de fichier non complètes sur le disque). Ces macros n’ont pas besoin d’êtreclmises entre parenthèses lorsqu’elles sont appelées ; spécifiez uniquement une $ valeur comme indiqué.

Macro Signification
$@ Nom complet de la cible actuelle (chemin d’accès, nom de base, extension), comme spécifié actuellement.
$$@ Nom complet de la cible actuelle (chemin d’accès, nom de base, extension), comme spécifié actuellement. Valide uniquement en tant que dépendant dans une dépendance.
$* Chemin d’accès de la cible actuelle et nom de base moins extension de fichier.
$** Tous les dépendants de la cible actuelle.
$? Tous les dépendants avec un horodatage ultérieur que la cible actuelle.
$< Fichier dépendant avec un horodatage ultérieur de la cible actuelle. Valide uniquement dans les règles d’inférence des commandes.

Pour spécifier une partie d’une macro de nom de fichier prédéfinie, ajoutez un modificateur de macro etclosez la macro modifiée entre parenthèses.

Modificateur Composant de nom de fichier résultant
D Lecteur plus répertoire
B Nom de base
F Nom de base plus extension
R Lecteur plus répertoire plus nom de base

Macros de récursivité

Utilisez des macros de récursivité pour appeler NMAKE de manière récursive. Les sessions récursives héritent des macros et Tools.ini des informations de ligne de commande et de variable d’environnement. Ils n’héritent pas des règles d’inférence définies par makefile ou .SUFFIXES des .PRECIOUS spécifications. Il existe trois façons de passer des macros à une session NMAKE récursive :

  • Définissez une variable d’environnement avec une SET commande avant l’appel récursif.
  • Définissez une macro dans la commande pour l’appel récursif.
  • Ou, définissez une macro dans Tools.ini.
Macro Définition
MAKE Commande utilisée à l’origine pour appeler NMAKE.

La $(MAKE) macro donne le chemin d’accès complet à nmake.exe.
MAKEDIR Répertoire actif lorsque NMAKE a été appelé.
MAKEFLAGS Options actuellement en vigueur. Utiliser en tant que /$(MAKEFLAGS). L’option /F n’est pas enclcours.

Macros de commande et macros d’options

Les macros de commande sont prédéfinies pour les produits Microsoft. Les macros Options représentent les options de ces produits et ne sont pas définies par défaut. Les deux sont utilisés dans les règles d’inférence prédéfinies et peuvent être utilisés dans les blocs de description ou les règles d’inférence définies par l’utilisateur. Les macros de commande peuvent être redéfinies pour représenter une partie ou l’ensemble d’une ligne de commande, danscldes options d’ud. Les macros Options génèrent une chaîne Null si elles ne sont pas définies.

Outil Macro de commande Défini en tant que Macro Options
Assembleur de macros AS ml ou ml64 AFLAGS
Compilateur C CC cl CFLAGS
Compilateur C++ CPP cl CPPFLAGS
Compilateur C++ CXX cl CXXFLAGS
Resource Compiler RC rc RFLAGS

Macros de variable d’environnement

NMAKE hérite des définitions de macros pour les variables d’environnement qui existent avant le début de la session. Si une variable a été définie dans l’environnement du système d’exploitation, elle est disponible en tant que macro NMAKE. Les noms hérités sont convertis en ase upperc. L’héritage se produit avant le prétraitement. Utilisez l’option /E pour faire en sorte que les macros héritées des variables d’environnement remplacent toutes les macros portant le même nom dans le makefile.

Les macros de variable d’environnement peuvent être redéfinies dans la session, ce qui modifie la variable d’environnement correspondante. Vous pouvez également modifier les variables d’environnement avec la commande SET. Toutefois, l’utilisation de la commande SET pour modifier une variable d’environnement dans une session ne modifie pas la macro correspondante.

Par exemple :

PATH=$(PATH);\nonesuch

all:
    echo %%PATH%%

Dans cet exemple, la modification de PATH la variable PATHd’environnement correspondante change ; elle ajoute \nonesuch à votre chemin d’accès.

Si une variable d’environnement est définie comme une chaîne qui serait syntaxiquement incorrecte dans un makefile, aucune macro n’est créée et aucun avertissement n’est généré. Si la valeur d’une variable contient un signe dollar ($), NMAKE l’interprète comme le début d’un appel de macro. L’utilisation de la macro peut entraîner un comportement inattendu.

Voir aussi

NMAKE et les macros