再帰呼び出しnmake
に関する MSDN の情報は次のとおりです。
再帰マクロを使用して、NMAKE を再帰的に呼び出します。再帰セッションは、コマンド ラインおよび環境変数マクロと Tools.ini 情報を継承します。これらは、makefile で定義された推論規則や .SUFFIXES および .PRECIOUS 仕様を継承しません。マクロを再帰 NMAKE セッションに渡すには、再帰呼び出しの前に SET で環境変数を設定するか、再帰呼び出しのコマンドでマクロを定義するか、Tools.ini でマクロを定義します。
したがって、次のようにa.mak
なります。
# ---- a.mak ----
some_variable = value
all:
nmake -f b.mak some_variable=$(some_variable)
#--- END ---
また、set
ソマンドを使用して変数を環境に入れることも同様に機能しますが、nmake
自動的に環境変数名を大文字にします (システムでは何らかの理由で小文字である " " のような奇妙な名前でもwindir
)、大文字と小文字が区別されます。したがって、環境変数を使用するには、変数を大文字で使用する必要があります。
MSDN から:
継承された名前は大文字に変換されます。継承は前処理の前に発生します
したがって、b.mak
コマンドラインで明示的にではなく、環境を使用して変数を渡す場合は、次のようになります。
#--- b.mak ---
all:
@echo some_variable is: $(SOME_VARIABLE)
#--- end ---
このため、nmake マクロ名をすべて大文字の命名規則で標準化することは、おそらく悪い考えではありません。