read input variable in makefile and set variable upon it`s name

armezit picture armezit · Aug 29, 2012 · Viewed 24.6k times · Source

I have a makefile where I want to read module name from input and then make directory based on it`s name. here is my code:

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

But after setting module_dir, it contains only ./modules/ (with no module name concatenated).
What is wrong in my code?

thanks for your answers

Answer

Beta picture Beta · Aug 29, 2012

Each command runs in its own subshell, so variables can't survive from one command to the next. Put them on the same line and they'll work:

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