web-dev-qa-db-ja.com

makefileで入力変数を読み取り、その名前に変数を設定します

入力からモジュール名を読み取り、その名前に基づいてディレクトリを作成するメイクファイルがあります。これが私のコードです:

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

ただし、module_dirを設定すると、./ modules /のみが含まれます(モジュール名は連結されません)。
私のコードの何が問題になっていますか?

あなたの答えをありがとう

27
armezit

各コマンドは独自のサブシェルで実行されるため、変数はコマンド間で存続できません。それらを同じ行に置くと、うまくいきます:

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