Hier ist die Info von MSDN über calling nmake
recursively:
Verwenden Rekursion Makros NMAKE rekursiv aufzurufen. Rekursive Sitzungen erben Befehlszeilen- und Umgebungsvariablemakros und Tools.ini-Informationen. Sie erben keine makefile-definierten Inferenzregeln oder .SUFFIXES- und .PRECIOUS-Spezifikationen. Um Makros an eine rekursive NMAKE-Sitzung zu übergeben, setzen Sie entweder eine Umgebungsvariable mit SET vor dem rekursiven Aufruf, definieren Sie einen Makro im Befehl für den rekursiven Aufruf oder definieren Sie ein Makro in Tools.ini.
So können Sie a.mak
aussehen machen:
# ---- a.mak ----
some_variable = value
all:
nmake -f b.mak some_variable=$(some_variable)
#--- END ---
Beachten Sie auch, dass der set
Sommand mit der Variable in der Umgebung zu setzen, wie gut funktioniert, aber nmake
nutzen automatisch Umgebungsvariablen (auch für seltsame wie "windir
", die aus irgendeinem Grund im System Kleinbuchstaben ist, und Groß-und Kleinschreibung, so dass die Variable verwenden, müssen Sie die Variable in Großbuchstaben verwenden.
From MSDN:
geerbt Namen in Großbuchstaben umgewandelt werden. Die Vererbung erfolgt, bevor die Vorverarbeitung
So, hier ist was Ihre b.mak
aussehen soll, wenn du gehst um die Variable zu übergeben mit der Umwelt statt explizit auf der Kommandozeile:
#--- b.mak ---
all:
@echo some_variable is: $(SOME_VARIABLE)
#--- end ---
Aus diesem Grunde, Es ist wahrscheinlich keine schlechte Idee, eine All-Caps-Namenskonvention für nmake-Makronamen zu standardisieren.