2017-01-25 7 views
0

Ich kann eine Variable an Kind unter Verwendung make -C VAR=$(VAR) target übergeben (bevorzugt dies zu export, da die Variable nur für ein einzelnes Ziel sinnvoll ist). Es scheint jedoch, dass, wenn VAR Variable nicht in übergeordneter definiert ist, untergeordnete erhält eine leere Zeichenfolge (es hat VAR ?= ..., und der Wert VAR ist leer). Wie kann ich das vermeiden?Übergeben Sie die Variable nur an untergeordnete Marke, wenn definiert

Es sieht so aus, als ob eine Variation auf Define make variable at rule execution time für meinen spezifischen Anwendungsfall funktionieren sollte, aber es erfordert, dass das übergeordnete Makefile den Standardwert des Kindes kennt, den ich vermeiden möchte.

Antwort

3

Sie sollten immer $(MAKE) verwenden, wenn Sie Sub-Maker aufrufen, nie explizit make. Außerdem fehlt in Ihren Beispielen ein Verzeichnis nach dem -C.

Was ist so etwas wie:

$(MAKE) $(if $(VAR),VAR=$(VAR)) 
Verwandte Themen