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 PATH
d’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.