est ici l'info de MSDN à propos calling nmake
recursively:
Utiliser des macros récursives pour appeler NMAKE récursive. Les sessions récursives héritent des macros de ligne de commande et d'environnement et des informations Tools.ini. Ils n'héritent pas des règles d'inférence définies par le fichier makefile ou des règles .SUFFIXES et .PRECIOUS. Pour passer des macros à une session NMAKE récursive, définissez une variable d'environnement avec SET 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.
Ainsi, vous pouvez faire a.mak
ressembler à:
# ---- a.mak ----
some_variable = value
all:
nmake -f b.mak some_variable=$(some_variable)
#--- END ---
Notez également que l'utilisation du set
Sommand pour mettre la variable dans l'environnement fonctionnera aussi bien, mais nmake
capitalise automatiquement les noms des variables d'environnement (même pour les étranges comme "windir
" qui est en minuscules dans le système pour une raison quelconque), et est sensible à la casse, donc pour utiliser la variable d'environnement, vous devez utiliser la variable en majuscules.
From MSDN:
noms hérités sont convertis en majuscules. L'héritage se produit avant prétraiter
Alors, voici ce que votre b.mak
devrait ressembler si vous allez passer la variable en utilisant l'environnement au lieu de explicitement sur la ligne de commande:
#--- b.mak ---
all:
@echo some_variable is: $(SOME_VARIABLE)
#--- end ---
À cause de cela, ce n'est probablement pas une mauvaise idée de standardiser une convention de nommage de toutes les majuscules pour les noms de macros nmake.