Partager via


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 noms de fichiers

Les macros de nom de fichier sont des noms de fichiers prédéfinis as spécifiés dans la dépendance (et non des spécifications de nom de fichier complètes sur le disque). Ces macros n’ont pas besoin d’être placées entre parenthèses lorsqu’elles sont appelées ; spécifiez uniquement un $as affichage.

Macro Signification
$@ Nom complet de la cible actuelle (chemin d’accès, nom de base, extension), as actuellement spécifié.
$$@ Nom complet de la cible actuelle (chemin d’accès, nom de base, extension), as actuellement spécifié. Valide uniquement as une dépendance 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 et placez 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 récursives

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 as/$(MAKEFLAGS). L’option /F n’est pas incluse.

Macros de commandes 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, y compris les options. Les macros Options génèrent une chaîne Null si elles ne sont pas définies.

Outil Macro de commande Défini as 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
compilateur de ressources RC rc RFLAGS

Macros de variables 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 as sous forme de macro NMAKE. Les noms hérités sont convertis en majuscules. 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 as comme une chaîne qui serait syntactiquement 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 as comme début d’un appel de macro. L’utilisation de la macro peut entraîner un comportement inattendu.

Voir aussi

NMAKE et les macros