2012-08-29 8 views
12

Ich habe ein Makefile, wo ich den Modulnamen aus der Eingabe lesen und dann das Verzeichnis anhand seines Namens erstellen möchte. hier ist mein Code:Eingangsvariable in Makefile lesen und Variable auf ihren Namen setzen

build: 
    @read -p "Enter Module Name:" module; 
    module_dir=./modules/$$module 
    mkdir -p $$module_dir/build; 

Aber nach der Einstellung module_dir, es enthält nur ./modules/ (ohne Modulnamen verkettet).
Was ist falsch in meinem Code?

Dank für Ihre Antworten

Antwort

36

Jeder Befehl wird in einem eigenen Subshell, so Variablen kann von einem Befehl zum nächsten nicht überleben. Setzen Sie sie in die gleiche Zeile und sie werden funktionieren:

build: 
    @read -p "Enter Module Name:" module; \ 
    module_dir=./modules/$$module; \ 
    mkdir -p $$module_dir/build 
+0

+1 für die Bereitstellung von Hintergrund – migu

Verwandte Themen